为什么我不能在if语句中传递常量?
if UIDevice.current.orientation.isLandscape{
let storyboard = UIStoryboard(name: "landscape", bundle: nil)
let initialViewController = storyboard.instantiateViewController(withIdentifier: "landscape")
}else{
let storyboard = UIStoryboard(name: "Main", bundle: nil)
let initialViewController = storyboard.instantiateViewController(withIdentifier: "ViewController")
}
self.window?.rootViewController = initialViewController
答案 0 :(得分:1)
您需要在范围内的if else块中插入错误行
if {
let initialViewController = ////
self.window?.rootViewController = initialViewController
}
else {
let initialViewController = ////
self.window?.rootViewController = initialViewController
}
OR
var initialViewController:UIViewController!
if {
initialViewController = ////
}
else {
initialViewController = ////
}
// use it here
答案 1 :(得分:0)
initialViewController
仅在if else
块的范围内可用,因此您需要在initialViewController
块开始并设置if else
之前声明initialViewController
属性,然后根据需要使用。
let initialViewController: UIViewController
if UIDevice.current.orientation.isLandscape {
let storyboard = UIStoryboard(name: "landscape", bundle: nil)
initialViewController = storyboard.instantiateViewController(withIdentifier: "landscape")
} else {
let storyboard = UIStoryboard(name: "Main", bundle: nil)
initialViewController = storyboard.instantiateViewController(withIdentifier: "ViewController")
}
window?.rootViewController = initialViewController
注意:您可能应该对编程范围进行更多研究。
答案 2 :(得分:0)
仔细查看Swift正在报告的错误:在代码的这一部分中找不到名称为initialViewController
的变量。
变量仅在创建它们的块的范围内可用。换句话说,如果要在initialViewController
语句之外的其他地方使用if
声明,请从if
语句中删除。您可以通过将其设置为var
来实现:
// Let Swift know that we’re going to make this a UIViewController
var initialViewController: UIViewController
if condition {
// Now, initialViewController has been instantiated; it just needs a value
initialViewController = storyboard.instantiateViewController(withIdentifier: "landscape")
} else {
initialViewController = storyboard.instantiateViewController(withIdentifier: "portrait")
}
// We can safely use it outside of the if statement, but it may need unwrapping since it was declared as a var
self.window?.rootViewController = initialViewController!
请注意,由于尚未定义storyboard
或condition
变量,因此无法复制/粘贴此确切的代码:请查看是否可以更改当前代码以解决我的问题已经描述过了!