【发布时间】:2019-08-25 06:47:51
【问题描述】:
当前的问题和我想知道的事情
UIBarButtonItem 操作方法在某些情况下不起作用。我想知道为什么它不起作用。
案例1
刚刚将 NavigationController 添加到默认 ViewController 中
import UIKit
class ViewController: UIViewController {
let okButton = UIBarButtonItem(title: "OK", style: .plain, target: self, action: #selector(okButtonTapped(_:)))
override func viewDidLoad() {
super.viewDidLoad()
self.navigationItem.rightBarButtonItem = okButton
}
@objc func okButtonTapped(_ sender: UIBarButtonItem) {
print("OK!")
}
}
在这种情况下,确定按钮不起作用。 没有错误信息。
案例2
在默认 ViewController 中添加了导航栏。 UINavigationItem 连接到名为 myNavigationItem 的插座。
import UIKit
class ViewController: UIViewController {
@IBOutlet weak var myNavigationItem: UINavigationItem!
let okButton = UIBarButtonItem(title: "OK", style: .plain, target: self, action: #selector(okButtonTapped(_:)))
override func viewDidLoad() {
super.viewDidLoad()
myNavigationItem.rightBarButtonItem = okButton
}
@objc func okButtonTapped(_ sender: UIBarButtonItem) {
print("OK!")
}
}
在这种情况下,确定按钮起作用。
总结
我知道即使在情况 1 中,如果在 viewDidLoad 中执行 okButton 初始化,它也会起作用。 我想知道为什么 case2 有效,但 case1 无效。
谢谢。
【问题讨论】: