我有两个不同的切入点:
let entryPoint: UITabBarController = mainStoryboard.instantiateViewControllerWithIdentifier("TabBarController") as! UITabBarController
和
let entryPoint: WelcomeController = mainStoryboard.instantiateViewControllerWithIdentifier("WelcomeController") as! WelcomeController
如何将instantiateViewControllerWithIdentifier
设置为此全局entryPoint
var?这对我来说很难,因为他们有两种不同的ViewController类型:UITabBarController
和ViewController
。
所以,我想要
var entryPoint?
以后
entryPoint: UITabBarController = mainStoryboard.instantiateViewControllerWithIdentifier("TabBarController") as! UITabBarController
或
entryPoint: WelcomeController = mainStoryboard.instantiateViewControllerWithIdentifier("WelcomeController") as! WelcomeController
答案 0 :(得分:1)
解决方案将取决于您以后打算如何使用entryPoint。
如果你没有任何特定于类的用法或者不介意一点类型转换,你总是可以将入口点声明为UIViewController:
var entryPoint:UIViewController?
swift将接受这两个赋值,因为所有类都是UIViewController的子类。
如果您想稍后使用特定属性,则需要检查变量的实际类
例如:
if let tabBarEntry = entryPoint as? UITabBarController
{
tabBarEntry.selectedIndex = 1
}
答案 1 :(得分:0)
这是我为应用程序采用的一种方法。
我将简要概述一下,然后提供示例代码。
您需要做的是:
在UserDefaults
中保存一个值,以便以后可以获取它以确定您的入口点。
要设置UserDefaults
UserDefaults.standard.set("TabBarController", forKey: "entryPoint")
获取值
UserDefaults.standard.string(forKey: "entryPoint")
在您的代码中,您可以检查输入点为
let entry = UserDefaults.standard.string(forKey: "entryPoint") as! String
var entryPoint?
if (entry == "TabBarController")
{
entryPoint = mainStoryboard.instantiateViewControllerWithIdentifier("TabBarController") as! UITabBarController
}
else
{
entryPoint = mainStoryboard.instantiateViewControllerWithIdentifier("WelcomeController") as! WelcomeController
}
但是一旦您设置了
entryPoint
对象,它的类型将被设置为UITabBarController
或WelcomeController
,并且在应用执行期间将保持不变。