Aar*_*ron 4 uinavigationcontroller uibarbuttonitem ios swift
我以编程方式向视图控制器添加了一个条形按钮项:
override func viewDidLoad() {
super.viewDidLoad()
self.navigationItem.leftBarButtonItem = UIBarButtonItem(title: "Menu", style: .Plain, target: nil, action: nil)
}
Run Code Online (Sandbox Code Playgroud)
现在我想以IBOutlet编程方式将该按钮项分配给它.我怎么用Swift做到这一点?
nhg*_*rif 15
所述IB的IBOutlet代表我覆盖整个院落乙 uilder和它表示从界面生成器到源代码的连接.以IBOutlet编程方式分配不太合理.
An IBOutlet只是一个类的实例变量,它与接口的一部分相关联,或者可以通过接口构建器设置.如果我们想要一个对我们按钮的引用(如果我们在界面构建器中创建它,我们就会引用它),我们只需在类中添加一个属性,然后将新创建的按钮分配给:
class MyViewController: UIViewController {
var someBarButton: UIBarButtonItem?
override func viewDidLoad() {
super.viewDidLoad()
self.someBarButton = UIBarButtonItem(title: "Menu", style: .Plain, target: nil, action: nil)
self.navigationItem.leftBarButtonItem = self.someBarButton
}
}
Run Code Online (Sandbox Code Playgroud)
现在,someBarButton是我们的"IBOutlet".
一些笔记......
我们可能实际上并不想以这种方式做事.
这为按钮创建了一个额外的强引用(self.navigationItem已经拥有对它的强引用leftBarButtonItem).
您会注意到,如果您创建了一个IBOutletfrom interface builder,它将被设置为weak属性.那么也许我们想要一个弱势的财产?
但我们实际上可以做得更好.试试这个尺码:
var leftNavBarButton: UIBarButtonItem? {
get {
return self.navigationItem.leftBarButtonItem
}
set (newValue) {
self.navigationItem.leftBarButtonItem = newValue
}
}
Run Code Online (Sandbox Code Playgroud)
现在,self.leftNavBarButton基本上只是一种方便的访问方式self.navigationItem.leftBarButtonItem.
| 归档时间: |
|
| 查看次数: |
9404 次 |
| 最近记录: |