iphone - 让 modalViewController 出现的问题

标签 iphone objective-c ios uiviewcontroller modalviewcontroller

我已经为此奋斗了几个小时。我到处搜索,似乎找不到解决我的问题的方法。我很确定我只是缺少一些关键概念。

我的 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/

相关文章:

iphone - Xcode - 如何更改应用程序/项目名称 : what do I need to to update and check?

iphone - 对字典进行排序并更改索引

objective-c - 将具有相同类名、接口(interface)和实现的两个框架(或包)加载到运行时中。会发生什么?

ios - arc4random:限制生成的随机数的值

ios - Launchscreen.storyboard 横向启动画面

ios - 单击 View 时出现导航栏

iphone - 如何使 'int'到 'string'具有特殊格式?

iphone - SKStoreProductViewController 是否允许更新应用程序?

ios - UILabel 中的 NSDateFormatter 返回 NULL

ios - UITableViewCell 没有调整到 UIImageView