• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

ios - UIButton.addTarget 与 swift 3 和本地功能

[复制链接]
菜鸟教程小白 发表于 2022-12-11 17:05:13 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

我正在尝试以编程方式生成多个按钮。目前,这是我所拥有的:

    for i in POIArray {

        let newI = i.replacingOccurrences(of: "GPS30", with: "")

        let button = UIButton(type: .custom)
        button.setImage(UIImage(named: newI), for: .normal)

        button.frame.size.height = 30
        button.frame.size.width = 30

        button.addTarget(self, action: #selector(buttonAction(texte:newI)), for: UIControlEvents.touchUpInside)
        XIBMenu?.stackMenuIco.addArrangedSubview(button)

    }

还有我的功能:

        func buttonAction(texte: String) {
            print("Okay with \(texte)")
        }

当我删除参数“texte”时,它正在工作。按钮很好地添加到堆栈中,但我需要该参数来传递变量。我收到构建时错误:

Argument of '#selector' does not refer to an '@objc' method, property, or initializer

是的,谢谢 XCode,我知道这不是 objc 方法,因为我正在快速编码!

有人知道方法吗?



Best Answer-推荐答案


这里需要用到objc_setAssociatedObject

在项目中添加扩展:-

extension UIButton {
private struct AssociatedKeys {
    static var DescriptiveName = "KeyValue"
}

@IBInspectable var descriptiveName: String? {
    get {
        return objc_getAssociatedObject(self, &AssociatedKeys.DescriptiveName) as? String
    }
    set {
        if let newValue = newValue {
            objc_setAssociatedObject(
                self,
                &AssociatedKeys.DescriptiveName,
                newValue as NSString?,
                objc_AssociationPolicy.OBJC_ASSOCIATION_RETAIN
            )
        }
    }
}
}

如何使用:-

//let newI = i.replacingOccurrences(of: "GPS30", with: "")
button?.descriptiveName = "stringData" //newI use here

如何获取参数:-

func buttonAction(sender: UIButton!) {
            print(sender.descriptiveName)
}

关于ios - UIButton.addTarget 与 swift 3 和本地功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38542171/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap