【问题标题】:If (Bools = true) not executing -SwiftIf (Bools = true) 没有执行 -Swift
【发布时间】:2016-09-12 21:09:17
【问题描述】:

当多个不同的 Bool 变量都为真(通过 IBAction 按钮按下激活为真)时尝试执行模态转场,但是,什么都没有发生——它们都是这样设置的——

UIViewController {

// INITIAL TO CHECK WHICH BUTTONS HAVE BEEN PUSHED //
var 1Check = Bool()

// Checks //
@IBAction func 1(_ sender: AnyObject) {
    1Check = true
    }

这里是执行-

viewDidLoad() {
    super.viewDidLoad()
    MoveOn()
}

func MoveOn(){
    if (1Check == true && 2Check == true ...) {
            self.performSegue(withIdentifier: "NewScreen", sender: nil)

    }
}

我错过了什么?谢谢!

【问题讨论】:

  • 从上到下是你的视图控制器吗?你确定这些值是真的吗?在视图加载时进行检查,然后才能点击任何按钮。
  • 是的,我如何让它在视图加载时不断检查而不是只检查一次?
  • 您可以在每次按下按钮后调用 MoveOn()。值是否仅在按下按钮后才会更改?
  • 效果很好!谢谢! - 是的。值只有在按下按钮后才会改变。
  • 小的语义建议,但您应该检查您的命名约定以符合标准。 Camel Casing 通常意味着变量和函数以 小写 字母而不是数字开头。我相信未来的同事会感谢你,或者更确切地说,不会讨论你的情况:)

标签: swift if-statement boolean


【解决方案1】:

对 MoveOn() 的调用需要在每次这些检查值之一发生更改时都会被调用的地方:

UIViewController {

    // INITIAL TO CHECK WHICH BUTTONS HAVE BEEN PUSHED //
    var 1Check = Bool()

    // Checks //
    @IBAction func 1(_ sender: AnyObject) {
        1Check = true
        MoveOn()
    }

    viewDidLoad() {
        super.viewDidLoad()
    }

    func MoveOn(){
        if (1Check == true && 2Check == true ...) {
            self.performSegue(withIdentifier: "NewScreen", sender: nil)

        }
    }
}

【讨论】:

  • 再次感谢兄弟!完美运行。
  • @Taytee 确定!
猜你喜欢
  • 2019-09-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-08
  • 2017-07-31
  • 2010-12-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多