Yuu*_*uuu 3 xcode button ios swift addtarget
现在我练习在我的 Swift 项目中应用 MVC 模式。我有一个视图控制器 (VC) 文件和一个 UIView 文件。
在 VC 文件中,我添加了 UIView 文件,如下所示。
class MyViewController: UIViewController {
private var myView = MyView()
override func viewDidLoad() {
super.viewDidLoad()
view.addSubview(myView)
myView.frame = CGRect(origin: .zero, size: view.bounds.size)
// and other codes...
}
@objc func showDeleteAlert() {
print("showDelete is pressed")
}
}
Run Code Online (Sandbox Code Playgroud)
然后,在 UIView 文件中,我添加了一些视图和按钮(我只是复制按钮部分)。
class MyView: UIView {
lazy var deleteButton: UIButton = {
let button = UIButton()
button.setTitle("delete", for: .normal)
button.addTarget(target: MyViewController, action: #selector(showDeleteAlert), for: UIControl.Event.touchUpInside) // -> I get error in here saying "Cannot find 'showDeleteAlert' in scope"
return button
}()
// and more codes...
}
Run Code Online (Sandbox Code Playgroud)
我在这里想做的是如何在按下deleteButton时将目标设置为showDeleteAlert函数?
我看到教程添加“self”作为目标参数,但就我而言,我将视图和控制器分开,因此不太确定如何访问 MyViewController 中的函数。
谢谢...
您在这里有两个选择:
addTarget视图控制器viewDidLoad:myView.deleteButton.addTarget(self, action: #selector(showDeleteAlert), for: UIControl.Event.touchUpInside)
Run Code Online (Sandbox Code Playgroud)
MyViewfunc addDeleteButtonTarget(_ target: Any?, action: Selector) {
deleteButton.addTarget(target, action: action, for: .touchUpInside)
}
Run Code Online (Sandbox Code Playgroud)
并称其为:
myView.addDeleteButtonTarget(self, action: #selector(showDeleteAlert))
Run Code Online (Sandbox Code Playgroud)
无论如何,您不能调用button.addTarget(target: MyViewController, ...),因为您需要传递 的实例MyViewController,而不仅仅是类名。
| 归档时间: |
|
| 查看次数: |
1974 次 |
| 最近记录: |