是否可以将变量设置为IBOutlet? 我有一个按钮,我想将视图显示为下拉列表。如果用户拥有帐户或是访客,则下拉列表会有所不同。我希望能做到以下几点:
class HomeViewController: UIViewController {
@IBOutlet weak var profileMenu: UIView!
@IBOutlet weak var guestMenu: UIView!
var currentMenu: UIView = self.profileMenu
override func viewDidLoad() {
super.viewDidLoad()
if(user.registered){
currentMenu = self.profileMenu
} else {
currentMenu = self.guestMenu
}
}
// toggle visibility on the currentMenu UIView
@IBAction func didClickProfileButton(sender: AnyObject) {
currentMenu.hidden = !currentMenu.hidden
}
答案 0 :(得分:1)
此处的问题与@IBOutlet
或UIView
无关。问题是如何设置成员变量的默认值。
这不起作用:
var profileMenu: UIView!
var currentMenu: UIView = self.profileMenu
您不能将self作为默认值引用,尤其是当其他成员变量尚未分配时!
相反,为什么不让currentMenu
成为一个解包的可选项,只需将其分配到viewDidLoad
?
var currentMenu: UIView!
override func viewDidLoad() {
super.viewDidLoad()
if(user.registered){
currentMenu = self.profileMenu
} else {
currentMenu = self.guestMenu
}
}
这应该有效,因为viewDidLoad
将始终被调用,if/else
确保它始终分配两个值中的一个。