【发布时间】:2014-11-07 21:24:50
【问题描述】:
我的具体情况是我试图切换导航栏隐藏和显示。
let navHidden = !self.navigationController?.navigationBarHidden
self.navigationController?.setNavigationBarHidden(navHidden!, animated: true)
不像通常在 Obj-C 中那样为我工作。
【问题讨论】:
我的具体情况是我试图切换导航栏隐藏和显示。
let navHidden = !self.navigationController?.navigationBarHidden
self.navigationController?.setNavigationBarHidden(navHidden!, animated: true)
不像通常在 Obj-C 中那样为我工作。
【问题讨论】:
navHidden 是可选的。并且您明确地解开该可选选项(这意味着如果 navHidden 为 nil,您会崩溃)。显然这里出了点问题。我建议
if let navController = self.navigationController {
let navHidden = navController.navigationBarHidden
navController.setNavigationBarHidden (!navHidden, animated:true)
}
【讨论】:
感叹号在布尔值的错误一侧。您编写它的方式表明布尔值可能为零。你想要 !navHidden。
【讨论】:
navHidden! 是为了确保这不是可选的。 !navHidden 是这样做的正确方法。
来自 Apple 的 book。
尝试使用!访问不存在的可选值会触发运行时错误。在使用之前,请务必确保可选项包含非零值!强制解包它的值。
【讨论】: