gpt4 book ai didi

ios - 与两个 UINavigationController 共享与 rootViewController 相同的 UIViewController

转载 作者:技术小花猫 更新时间:2023-10-29 10:16:23 29 4
gpt4 key购买 nike

更新:我决定采用不同的方式来解决我的问题。我没有尝试直接重用相同的 UIViewController,而是使用两个普通的 UIViewControllers,它们被设置为 rootViewControllers。在他们的 loadView 方法中,他们调用 [storyboard instantiateViewControllerWithIdentifier:] 以获取前一个 UIViewController 并将他们的 View 设置为 Controller 的 View 。无论如何,这可能是首选方法,因为我需要设置多个变量和委托(delegate)。

我有一个 UIStoryBoard,其中一个 UITabBarController 作为与两个 UINavigationControllers 相连的入口点。它们中的每一个都共享一个通用的 UIViewController 作为它们的 Root View Controller 。当应用程序启动时,第一个 UITabBarItem 被选中, View 按预期加载。但是,当我选择第二个 UITabBarItem 时,相同的 View 不可见。我看到带有黑色背景的 UINavigationBar。我是不是在 Storyboard 界面上做错了什么,或者我是否需要通过每个 UINavigationController 方法(例如 loadView)手动实例化 UIViewController

最佳答案

奇怪的是,这是一个没有其他人问过的问题。据我所知,共享 rootViewController 是不可能的,我认为这无疑是一个错误,因为当您检查 Storyboard上的连接时,您可以看到 View Controller 已连接到两个导航 Controller 。我认为这是 Storyboard中的一个缺陷,因为复制 viewController 并重新应用它们的所有连接非常容易出错,并且会使 Storyboard过于复杂。

我看到了您对问题的解决方案。像这样的解决方法让我怀疑 iOS 中当前的 Storyboard功能是否已准备好创建应用程序。我认为 Storyboard存在概念性问题,Apple 需要决定 Storyboard上的 viewController 是代表实例还是仅代表类,现在它并不一致,因为您可以看到多个 segues 实际上可以指向相同的 viewController 但实际上每个 segue 都有自己的实例,为什么 rootViewController 连接不遵循这一点?我不知道。

请注意,在您的解决方案中,请考虑 Apple 文档中的以下内容:

“重要 View Controller 是其 View 及其创建的任何 subview 的唯一所有者。它负责创建这些 View 并在适当的时候放弃它们的所有权,包括在低内存条件下和 View Controller 本身已发布。如果您使用 Storyboard或 nib 文件来存储 View 对象,则每个 View Controller 对象会在 View Controller 请求时自动获取这些 View 的副本。但是,如果您手动创建 View ,则应该永远不要对多个 View Controller 使用相同的 View 对象。”

http://developer.apple.com/library/ios/#documentation/UIKit/Reference/UIViewController_Class/Reference/Reference.html

关于ios - 与两个 UINavigationController 共享与 rootViewController 相同的 UIViewController,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9710676/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com