gpt4 book ai didi

ios - 来自外部类的 addTarget

转载 作者:行者123 更新时间:2023-11-28 11:10:14 24 4
gpt4 key购买 nike

我面临这个问题:我想为运行时创建的按钮分配一个 Action ,我正在使用这个自定义类:

import UIKit

class SubViewManager: NSObject {
var button = UIButton()

然后我有在 View 中添加按钮的功能:

frame.addSubview(button)

分配 Action 的函数:

func setButtonAction(sender: UIButton!, buttonAction: Selector) {
button.addTarget(self, action: buttonAction, forControlEvents: UIControlEvents.TouchUpInside)
}

现在在 ViewController 类中,我这样调用 SubViewManager 对象:

var newSubView:SubViewManager!

然后在我正在做的一个过程中:

newSubView.addButton(...//Dimension and details//...)
newSubView.setButtonAction(newSubView.button, buttonAction: "save")

这里我遇到了问题,这个错误出现在控制台中:

unrecognized selector sent to instance 0x7f92f9694140

我做错了什么?

编辑:我注意到,如果我直接在调用 .setButtonAction 的函数中初始化对象,它会起作用,但我不能在同一个函数中声明因为我需要它的多个功能!

RE-EDIT:当我执行 .addTarget 方法时,我想运行 ViewController 类的过程,但它运行的是不存在的 SubViewManager 过程,那就是错误的原因,但我不知道如何在调用外部类中的 .addTarget 时运行 ViewController 类过程。

最佳答案

它崩溃是因为在您的代码中,您设置为处理按钮操作事件的目标是 SubViewManager 实例(setButtonAction 方法中的“self”)

func setButtonAction(sender: UIButton!, buttonAction: Selector) {
button.addTarget(self, action: buttonAction, forControlEvents: UIControlEvents.TouchUpInside)
}

但是您实现保存功能的实际对象是 ViewController 类。

您可以尝试修改 setButtonAction 方法的参数以传递将实现按钮操作的目标而不是未使用的 sender : UIButton! 因为你已经调用了 addButton 方法并且已经有 button 属性指向它。尝试这样的事情

func setButtonAction(target: AnyObject! , buttonAction: Selector) {
button.addTarget(target, action: buttonAction, forControlEvents: UIControlEvents.TouchUpInside)
}

然后调用setButtonAction方法时传入viewController

newSubView.setButtonAction(self, buttonAction: "save")

其中 self 是实现保存功能的 ViewController 类的实例。

关于ios - 来自外部类的 addTarget,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35585215/

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