我正在开发一个已main.storyboard
的应用,我可以通过选择isInitialViewController
来启动应用加载所需的视图控制器,如下所示。
我现在已经为我的项目添加了另一个故事板,名为Customer.Storyboard
。
我有两个问题。
我们在代码中的确切地说,必须首先加载main.storyboard
?
如何在应用加载时从Customer.storyboard
初始化视图(通过选择is initial View Controller
中的Customer.Storyboard
无效,它会从{{1}加载视图}})?
答案 0 :(得分:2)
从plist中删除main.storyboard加载并更改你的didfinishwithlaunchingoptions func:
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions:
[UIApplicationLaunchOptionsKey: Any]?) -> Bool {
self.window = UIWindow(frame: UIScreen.main.bounds)
let storyboard = UIStoryboard(name: "XXX", bundle: nil)
let initialViewController = storyboard.instantiateViewController(withIdentifier: "LoginSignupVC")
self.window?.rootViewController = initialViewController
self.window?.makeKeyAndVisible()
return true
}
在Plist上设置要使用的起始故事板。默认情况下,它是主要的。 **注意:XXX用于表示您要使用的新文件的名称。
答案 1 :(得分:2)
This is a great step by step tutorial about this with best practices.
让故事板变得激烈的干净方式。稍后在本教程中,您将找到一种获取ViewController实例的简洁方法。
enum AppStoryboard : String {
case Main = "Main"
case PreLogin = "PreLogin"
case Timeline = "Timeline"
var instance : UIStoryboard {
return UIStoryboard(name: self.rawValue, bundle: Bundle.main)
}
}
// USAGE :
let storyboard = AppStoryboard.Main.instance
关于您的问题:在项目Plist上设置第一个Storyboard。默认情况下它是主要的。
答案 2 :(得分:1)
您应该知道两个概念:“app的默认界面”和“storyboard的默认场景(视图控制器)”。
“app的默认界面”在Info.plist中设置,请参见下图 default interface for app
“故事板的默认场景(视图控制器)”由isInitialViewController
因此,如果要在Main.storyboard中启动MainViewController
,则应将默认界面设置为Main.storyboard
如果您想在Custom.storyboard中初始化CustomViewController
,可以将isInitialViewController
中的CustomViewController
设置为true。
然后,您可以CustomViewController
UIStoryboard(name: "Custom", bundle: Bundle.main).instantiateInitialViewController()
个实例
如果你想初始化一个不是initialViewController的ViewController,你可以通过UIStoryboard(name: "Custom", bundle: Bundle.main).instantiateViewController(withIdentifier: "yourViewController")
获取实例。在此之前,您应该在故事板中设置Storyboard ID
。
Storyboard ID in storyboard file