导航控制器的最佳实践

问题描述 投票:0回答:2

当用户打开应用程序时,他/她将看到详细控制器。由于存在两个视图控制器,列表和详细信息,因此存在问题。我想从细节控制器开始然后返回列表(左侧滑动)。

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

我尝试在故事板中使用带有导航控制器的列表但是细节控制器没有导航控制器,因此导航堆栈中的弹出不起作用。

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

  1. 在AppDelegate中为导航控制器创建单例,并在堆栈中添加视图控制器。但不知道如何添加列表控制器然后添加详细控制器。
  2. 你保持
  3. 还有其他想法吗?
  4. 协调器模式(这个简单的应用程序的矫枉过正)?
ios swift uinavigationcontroller appdelegate
2个回答
1
投票

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

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
}

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


1
投票

如果您不想使用导航控制器,但希望用户能够向左滑动以从初始详细信息v.c“返回”。对于主v.c.,在我看来,你想要的是一个UIPageViewController,它提供了这种滑动功能。

但是,如果这真的是一个主要的细节情况,那么我认为如果你现在不使用导航控制器,你应该使用导航控制器,因为这是master-detail的自然表达;这是用户期望的结果,随着应用程序的发展,将使您的工作变得更加简单。将应用程序最初启动到导航控制器中的详细视图控制器中没有任何困难。这就是我实际推荐的方法。

© www.soinside.com 2019 - 2024. All rights reserved.