我的具体情况是我试图将导航栏隐藏并显示。
let navHidden = !self.navigationController?.navigationBarHidden
self.navigationController?.setNavigationBarHidden(navHidden!, animated: true)
对我来说不像通常在Obj-C中那样。
答案 0 :(得分:15)
感叹号位于布尔值的错误一侧。你写它的方式表明布尔值可能是零。你想要的!navHidden。
答案 1 :(得分:3)
navHidden!
是为了确保这不是可选的。 !navHidden
是正确的方法。
来自Apple的book。
尝试使用!访问不存在的可选值会触发运行时错误。在使用之前,请务必确保可选项包含非零值!强行解开它的价值。
答案 2 :(得分:1)
navHidden是可选的。并且你明确地解开了那个可选项(这意味着如果navHidden为nil你会崩溃)。显然这里有些不对劲。我建议
if let navController = self.navigationController {
let navHidden = navController.navigationBarHidden
navController.setNavigationBarHidden (!navHidden, animated:true)
}