由viewDidLoad启动时未正确添加UINavigationController

时间:2011-08-29 09:33:01

标签: iphone objective-c ios uinavigationcontroller viewdidload

  

可能重复:
  Call function on "viewDidLoad" [SOLVED]

我有函数startApp,它看起来像这样:

- (void)startApp {
NSLog(@"startApp initiated");

aNavController = [[UINavigationController alloc] initWithNibName:nil bundle:nil];
[self presentModalViewController:aNavController animated:YES]; }

通过按钮调用时,例如:

- (IBAction)showSettings:(id)sender {
[self startApp]; }

它工作正常,但由viewDidLoad调用,如:

- (void)viewDidLoad {
[super viewDidLoad];
[self startApp]; }

输出“startApp initiated”但导航控制器不会出现。我不知道为什么会这样,似乎他们应该以同样的方式工作?在同一个文件和所有。有谁知道为什么这不能正常工作?

谢谢你, Tobias Tovedal

3 个答案:

答案 0 :(得分:0)

在viewDidLoad中,您尝试使用导航视图覆盖现有视图。这适用于大多数视图控制器,但我认为UINavigationViewController想要成为应用程序中的根或最底层视图控制器。

也许它可以实例化您的导航视图控制器,然后创建您想要在其中显示的视图。

直接从代码中使用导航控制器很棘手。如果您使用Xcode的File-> New Project创建基于导航的应用程序,然后添加您拥有的任何现有代码,那么您将有更轻松的时间。

答案 1 :(得分:0)

您无法在viewDidLoad方法中显示视图控制器。在viewDidAppear中尝试一下。

答案 2 :(得分:0)

在viewdidLoad中编写此方法[self performSelector:@selector(loadView)withObject:nil afterDelay:1];现在创建一个方法 - (void)loadView {//在此处编写导航代码}