全部,
在ViewDidLoad中,我设置了:
BarButtonPAY.enabled = false
并且禁用了条形按钮项目并且它不可选择,那很好。
我在View Controller上有一个计算属性,它启用了带有enable = true的按钮。
我收到错误'在可选值中找到nil'我注意到BarButtonItem是可选的。当我把?在变量的末尾,它仍然无法启用。有任何想法吗 ?
class ViewController: UIViewController {
@IBOutlet weak var BarButtonPAY: UIBarButtonItem!
var PayButton : Int {
didSet {
println("Barracuda")
BarButtonPAY?.enabled = true
}
}
我现在在视图控制器中设置了不同的计算属性 - 就像这样(从init中删除了var)。
@IBOutlet weak var BarButtonPAY: UIBarButtonItem!
var PayButton : Int? {
didSet {
println("Barracuda")
BarButtonPAY?.enabled = true
}
}
required init(coder aDecoder: NSCoder) {
// self.PayButton = 0
super.init(coder: aDecoder)
}
init() {
// self.PayButton = 0
super.init(nibName: nil, bundle: nil)
}
在tableview单元格上按下按钮时。要选择产品,请将付款按钮突出显示为BarButtonItem:
@IBAction func SelectedButton(sender: UIButton) {
// Set the colours and then highlight 'Next' on
sender.backgroundColor = UIColor.blueColor()
sender.setTitleColor(UIColor.whiteColor(), forState: UIControlState.Normal)
sender.setTitle("Ordered", forState: UIControlState.Normal)
let test = ViewController()
test.PayButton = 2
}
答案 0 :(得分:1)
由于PayButton不是可选属性,我假设您在初始化BarButtonPAY之前在初始化程序中设置其值。尝试将默认值设置为PayButton
var PayButton : Int = -1 {
didSet {
println("Barracuda")
BarButtonPAY?.enabled = true
}
}
或将其声明为可选的Int
var PayButton : Int? {
didSet {
println("Barracuda")
BarButtonPAY?.enabled = true
}
}
并在两种情况下在init上设置其值时删除该行
已编辑
即使在let test = ViewController()
中创建对象类型的ViewController后,BarButtonPAY也未初始化(在ViewController viewDidLoad方法之前不能使用它)。一种可能的解决方法:在ViewController中创建另一个可选的Integer属性,并将其命名为initialValue。在selectedButton上设置initialValue如下
@IBAction func SelectedButton(sender: UIButton) {
// Set the colours and then highlight 'Next' on
sender.backgroundColor = UIColor.blueColor()
sender.setTitleColor(UIColor.whiteColor(), forState: UIControlState.Normal)
sender.setTitle("Ordered", forState: UIControlState.Normal)
let test = ViewController()
test.initialValue = 2
}
然后在ViewController viewDidLoad中将PayButton设置为initialValue
override func viewDidLoad(){
PayButton = initialValue
}
答案 1 :(得分:0)
执行此操作let test = ViewController()
时,您正在创建视图控制器的新实例。这样你的网点就是nil
。尝试从故事板访问您的视图控制器:
let storyboard = UIStoryboard(name: "Main", bundle: nil)
let viewController = storyboard.instantiateViewControllerWithIdentifier("yourViewController") as! UIViewController
self.presentViewController(viewController, animated: true, completion: nil)
然后访问该属性:
viewController.PayButton = 2