我已经为此奋斗了几个小时。我到处搜索,似乎找不到解决我的问题的方法。我很确定我只是缺少一些关键概念。
我的 AppDelegate (didFinishLaunching) 基本上设置了我的窗口并调用 RootViewController:
// create our window UIWindow *window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; [window setBackgroundColor:[UIColor blackColor]]; // create our rootviewcontroller RootViewController *controller = [[RootViewController alloc] init]; // add our rootviewcontroller's view to our window [window addSubview:controller.view]; // controller is now owned by window's view [controller release]; // show us to the world [window makeKeyAndVisible];
当我添加controller.view作为窗口的 subview 时,我的理解是RootVC的loadView会自动被调用。
在 RootVC loadView 中,我创建一个 tabBarController,每个选项卡都有一个 navigationController 和它自己的 viewController。一切都运行良好。
在 RootVC viewDidLoad 中,我检查这是否是用户第一次运行此应用程序,如果是,我想抛出一个模式欢迎屏幕。这是我遇到麻烦的部分。
我希望在 RootVC 的 viewDidLoad 方法中保留尽可能多的代码,并且理想情况下能够通过以下方式完成我想要的任务:
WelcomeViewController *welcome = [[WelcomeViewController alloc] init]; [self presentModalViewController:welcome animated:true]; [welcome release];
显然这不起作用。 WelcomeVC 的 loadView 尚未运行,因为我还没有显式设置它的 view 属性。我尝试过很多不同的解决方案(welcome.view - [[UIView....],使用WelcomeVC的init方法来设置self.view),但我似乎无法弹出该模式。
我应该如何实现我正在寻找的目标?最佳实践是什么?保持代码紧凑和整洁的最佳解决方案是什么?
我陷入困境,所以希望您的解决方案能让我继续开发我的应用程序!
最佳答案
虽然问题没那么简单,但解决办法却是。您必须等到主视图出现。因此,检查条件并在 viewDidAppear
方法中呈现您的模态视图,而不是在 viewDidLoad
方法中。
关于iphone - 让 modalViewController 出现的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5037851/