当我调用下一个视图控制器时出错

时间:2013-09-10 07:47:31

标签: iphone ios objective-c view uivewcontroller

当我调用下一个视图控制器时,我收到一个错误,我想调用视图控制器一个操作继续。这个屏幕将在我们第一次运行时出现。 控制器不会进入下一个视图。

-(void)viewDidLoad
{
    welcomePage *temp = [[welcomePage alloc]initWithNibName:@"welcomePage" bundle:nil];       
    [self presentViewController:temp animated:YES completion:^(void){}];

}

警告:尝试显示其视图不在窗口层次结构中!

5 个答案:

答案 0 :(得分:0)

使用此代码

-(void)viewDidLoad
{
    welcomePage *temp = [[welcomePage alloc]initWithNibName:@"welcomePage" bundle:nil];       
    [self presentViewController:temp animated:YES completion:nil];
}

答案 1 :(得分:0)

如果您使用的是Storyboard:请使用此

  

instantiateViewControllerWithIdentifier

    UIViewController objController  = [self.storyboard instantiateViewControllerWithIdentifier:@"StoryBoard Id"];
 [self presentViewController:objController animated:YES completion:nil];

设置Storybaord ID,Check Here

答案 2 :(得分:0)

该错误意味着您正试图从当前不在屏幕中的视图控制器中呈现模态视图控制器。

答案 3 :(得分:0)

此错误表示您尝试从屏幕上尚未显示的视图中显示“欢迎页面”。

知道简单地将代码移动到viewDidAppear方法对你不起作用,你可以尝试做的是:

-(void)viewDidAppear
{
    [self presentWelcome];
}

- presentWelcome {
welcomePage *temp = [[welcomePage alloc]initWithNibName:@"welcomePage" bundle:nil];       
    [self presentViewController:temp animated:YES completion:^(void){}];
}

这里发生的是当视图出现时(因此当它在视图层次结构中时),控制器启动一个调用另一个viewController的函数。希望这能解决你的问题。

希望这能帮到你!

答案 4 :(得分:0)

试试这个..

你改变Appdelegate.m中的代码didFinishLaunchingWithOptions方法就像这样

self.viewController = [[ViewController alloc] initWithNibName:@"ViewController" bundle:nil];
UINavigationController *nav=[[UINavigationController alloc]initWithRootViewController:self.viewController];
self.window.rootViewController = nav;

在你的ViewDidLoad方法中......

welcomePage *temp = [[welcomePage alloc]initWithNibName:@"welcomePage" bundle:nil];       
[self.navigationController presentViewController:temp animated:YES completion:nil];

要解雇viewcontroller,您可以在welcomepage按钮操作中编写以下代码

-(IBAction)dismiss:(id)sender{
[self dismissViewControllerAnimated:YES completion:nil];
}