导航控制器的最佳实践

best practices for navigation controller

当用户打开应用程序时,he/she 将看到详细信息控制器。有一个问题,因为有两个视图控制器,列表和详细信息。我想从细节控制器开始,然后返回列表(向左滑动)。

现在,每个故事板都有一个视图控制器。我喜欢它,它很干净。我想保留它。并且,将会有更多的细节控制器(细节类型)。它将有一个详细控制器列表,可以在列表控制器中选择一个。

我尝试在情节提要中包含带有导航控制器的列表,但详细信息控制器没有导航控制器,因此导航堆栈中的弹出窗口不起作用。

我用谷歌搜索了一些解决方案 -

  1. 在 AppDelegate 中为导航控制器创建一个单例,并在堆栈中添加视图控制器。但不确定如何添加列表控制器然后添加详细信息控制器。

  2. 继续?

  3. 还有其他想法吗?

  4. 协调器模式(对于这个简单的应用程序来说太过分了)?

如果您不想使用导航控制器,但希望用户能够向左滑动以从初始详细信息 v.c 转到 "back"。高手v.c,在我看来,你想要的是一个UIPageViewController,它正好提供了这种滑动功能。

但是,如果这真的是主从关系的情况,那么我认为如果您现在不使用导航控制器,那么您应该使用导航控制器,因为那是主要细节;这是用户所期望的,并且随着应用程序的发展将使您的事情变得更加简单。将应用程序最初启动到导航控制器内的详细视图控制器中没有任何困难。这就是我真正推荐的方法。

此时,您应该在应用启动时以编程方式处理它。你可以做的是创建一个导航控制器,包含列表和详细信息视图控制器,并将其设置为 window 根视图控制器。示例(假设两个视图控制器都在主故事板中):

var window: UIWindow!


func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {


    let firstVC = ListViewController.storyboardInstance()
    let secondVC = DefaultNoteController.storyboardInstance()

    let navigation = UINavigationController()
    navigation.viewControllers = [firstVC, secondVC] as! [UIViewController]
    window = UIWindow(frame: UIScreen.main.bounds)
    window.rootViewController = navigation


    return true
}

据此,应用程序应在导航控制器(详细信息)中显示第二个视图控制器,并带有包含后退按钮的导航栏。