iOS 在 "detail view" 而不是导航控制器创建的 RootVIewController 处启动应用程序

iOS start app at a "detail view" instead of RootVIewController created by Navigation Controller

基本上,我删除了一个导航控制器,向 RootView 的 TableView 添加了 3 行,将第一行的 segue 设置为 ViewController("detail view")。现在我想在此 "detail view" 启动我的应用程序。 我尝试将初始视图设置为 "detail view",但没有成功。后来我试图触发 segue,但我无法让它工作,而且这个解决方案似乎很老套,我决定问问你们什么是正确的方法。

提前感谢您的回复!

如果您的应用仅在 iPhone 上运行,您可以使用 splitviewController 来完成此操作。

放入一个 splitviewcontroller 并将其设置为初始视图控制器。

将tableviewcontroller嵌入到Navigation Controller中,并将Navigation Controller设置为splitviewController的master view controller。

将detailviewcontroller嵌入到一个Navigation Controller中,并将navigation controller设置为splitviewController的detail view controller。

然后创建 segue,你的故事板应该是这样的:

更多详情可以下载Stanford cs 193p Lecture 8的demo: Psychologist VCL.zip

您可以从 appDelegate 设置初始视图控制器 class。

这是您的代码:

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
    // Override point for customization after application launch.

    // mainStoryboard
    let mainStoryboard = UIStoryboard(name: "Main", bundle: nil)

    // rootViewController
    let rootViewController = mainStoryboard.instantiateViewControllerWithIdentifier("DetailViewController") as? UIViewController

    // navigationController
    let navigationController = UINavigationController(rootViewController: rootViewController!)

    navigationController.navigationBarHidden = true // or not, your choice.

    // self.window
    self.window = UIWindow(frame: UIScreen.mainScreen().bounds)

    self.window!.rootViewController = navigationController

    self.window!.makeKeyAndVisible()

    return true
}

并且不要忘记从 Identity Inspector 分配 StoryBoard ID,它看起来像: