gpt4 book ai didi

ios - Swift:无法识别的选择器发送到类,按钮目标在 NSObject 类中

转载 作者:行者123 更新时间:2023-12-02 03:16:01 25 4
gpt4 key购买 nike

请不要将此问题标记为重复,因为我已经尝试了各种解决方案但不太有效。我正在 FormViewController 中创建 headerView(我使用的是 Eureka),并将 View 分成单独的 HeaderViews: NSObject 来遵守 MVC 原则。我尝试添加一个buttonTarget,但它抛出错误无法识别的选择器发送到类。我的代码如下:

class ProfileSettingsViewController: FormViewController {

override func viewDidLoad() {
super.viewDidLoad()
form +++

Section(){ section in
section.header = {
var header = HeaderFooterView<UIView>(.callback({
let view = HeaderViews.setUpHeaderForProfileView(user: self.user)
return view
}))
header.height = { 200 }
return header
}()
}
}

在我的 HeaderViews 中:

class HeaderViews: NSObject {

static func setUpHeaderForProfileView(user: User) -> UIView {
let view = UIView(frame: CGRect(x: 0, y: 0, width: screen.width, height: 100))
let changeAvatarButton = UIButton(frame: CGRect(x: (screen.width / 2) - 50, y: avatarImageView.frame.maxY + 10, width: 100, height: 20))
changeAvatarButton.addTarget(self, action: #selector(getAvatar(_:)), for: .touchUpInside)
view.addSubview(changeAvatarButton)
return view
}

func getAvatar(_ sender: UIButton!) {
print("Change Avatar tapped")
}
}

我不太确定我是否犯了任何错误,因为我在这篇文章中尝试了选择器的各种方法:Unrecognized selector sent to class

我怀疑这可能与 NSObject 子类有关。有什么建议吗?

最佳答案

更新如果您无法获取 HeaderViews 的实例。然后只需将 getAvatar 更改为静态函数即可。

static func getAvatar(_ sender: UIButton!) {
print("Change Avatar tapped")
}

来源您不应使用 self 作为静态函数中的目标。因为这个self意味着HeaderViews。将实例传递给函数作为目标。

例如:

static func setUpHeaderForProfileView(user: User, in instance: HeaderViews) -> UIView {
let view = UIView(frame: CGRect(x: 0, y: 0, width: screen.width, height: 100))
let changeAvatarButton = UIButton(frame: CGRect(x: (screen.width / 2) - 50, y: avatarImageView.frame.maxY + 10, width: 100, height: 20))
changeAvatarButton.addTarget(instance, action: #selector(getAvatar(_:)), for: .touchUpInside)
view.addSubview(changeAvatarButton)
return view
}

关于ios - Swift:无法识别的选择器发送到类,按钮目标在 NSObject 类中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45263628/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com