【发布时间】:2011-02-18 05:08:42
【问题描述】:
我已经为此奋斗了好几个小时。我到处搜索,似乎找不到解决我问题的方法。我很确定我只是在这里缺少一些关键概念。
我的 AppDelegate (didFinishLaunching) 基本上设置了我的窗口并调用 RootViewController:
// 创建我们的窗口 UIWindow *window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; [窗口设置背景颜色:[UIColor blackColor]]; // 创建我们的根视图控制器 RootViewController *controller = [[RootViewController alloc] init]; // 将我们的 rootviewcontroller 的视图添加到我们的窗口 [窗口 addSubview:controller.view]; // 控制器现在归窗口视图所有 [控制器释放]; // 向世界展示我们 [窗口 makeKeyAndVisible];当我将controller.view 添加为窗口的子视图时,我的理解是RootVC 的loadView 会自动被调用。
在 RootVC loadView 中,我创建了一个 tabBarController,每个选项卡都有一个 navigationController 和它自己的 viewController。一切正常。
在 RootVC viewDidLoad 中,我正在检查这是否是用户第一次运行此应用程序,如果是,我想弹出一个模态欢迎屏幕。这是我遇到问题的部分。
我希望在 RootVC 的 viewDidLoad 方法中保留尽可能多的代码,并且理想情况下能够通过以下方式完成我想要的:
WelcomeViewController *welcome = [[WelcomeViewController alloc] init]; [自我presentModalViewController:欢迎动画:真]; [欢迎发布];显然这是行不通的。 WelcomeVC 的 loadView 还没有运行,因为我没有明确设置它的 view 属性。我玩过一堆不同的解决方案(welcome.view - [[UIView ....],使用 WelcomeVC 的 init 方法设置 self.view),但我似乎无法让该模式弹出。
我应该如何完成我正在寻找的东西?什么是最佳实践,以及使我的代码保持紧凑和整洁的最佳解决方案是什么?
我被困住了,所以希望你的解决方案能让我继续开发我的应用程序!
【问题讨论】:
-
与你的问题无关,我认为 [window addSubview:controller.view] 不会保留视图控制器。
-
@MHC - 你能详细说明一下吗?为什么你这么想?我认为每当视图添加子视图时,该子视图都会被保留。
-
子视图被保留,但不是它的视图控制器。
标签: iphone objective-c ios uiviewcontroller modalviewcontroller