【问题标题】:Swift check uiswitch status on viewDidLoad快速检查 viewDidLoad 上的 uiswitch 状态
【发布时间】:2016-02-23 10:37:32
【问题描述】:

我遇到了 uiswitch 的问题。我需要知道应用程序第一次运行时 uiswitch 是打开还是关闭。 我试过这段代码:

     @IBOutlet  weak var switch1: UISwitch!


      override func viewDidLoad() {
      super.viewDidLoad()
     if switch1.on {
        print("Switch is on")

    }
    else {


       print("Switch is off")
                }
    }

但每次我得到这个错误:

  fatal error: unexpectedly found nil while unwrapping an Optional value

如何打开 uiswitch 而不会出现该错误?

【问题讨论】:

  • 验证您的 IBOutlet 的连接,它可能已断开。
  • 您的代码有错误。请参阅其他情况下的“打印”行。
  • @HammadRaza:那将是编译错误,而不是运行时错误。 OP 一定是在这里粘贴错了
  • 您的代码没有问题。检查插座是否设置为您在 IB 中的开关。默认情况下,所有 UI 控件都未变形。检查接口生成器中的连接

标签: ios swift uiswitch viewdidload unwrap


【解决方案1】:

你必须调用 super。所有 IBOutlets 都是隐式展开的可选。在调用awakeFronNib 之前是nil。如果您在此之前尝试访问其中之一,则会出现异常。
还要验证交换机的插座是否已连接。

 override func viewDidLoad() {
  super.viewDidLoad()
     if switch1.on {
        print("Switch is on")
    }
    else {
         print("Switch is off"
          }
    }

【讨论】:

    【解决方案2】:

    可能是您的 switch1 未连接到故事板或 xib 中的 UISwitch。

    if let switch = switch1 {
      if switch.on {
         print("switch is on")
      } else {
         print("switch is off")
      }
    } else {
       println("Where's the switch")   
    }
    

    【讨论】:

    • 这解决了我的问题 let switch = switch1,谢谢
    猜你喜欢
    • 2013-10-17
    • 2017-10-28
    • 2018-04-04
    • 2018-09-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-16
    相关资源
    最近更新 更多