【问题标题】:error when i am calling next view controller当我调用下一个视图控制器时出错
【发布时间】:2013-09-10 07:47:30
【问题描述】:

我在调用下一个视图控制器时遇到错误,我想调用一个视图控制器以继续执行操作。只有在我们第一次运行时,此屏幕才会第一次出现。 控制器不会进入下一个视图。

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

}

警告:尝试呈现不在窗口层次结构中的视图!

【问题讨论】:

    标签: iphone ios objective-c view uivewcontroller


    【解决方案1】:

    试试这个..

    您像这样更改 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];
    

    要关闭视图控制器,您可以在欢迎页面按钮操作中编写以下代码

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

    【讨论】:

    • kalyani puvvada,它正在工作,现在单击欢迎页面中的按钮后如何进入 viewcontroler。
    【解决方案2】:

    使用此代码

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

    【讨论】:

    • 它显示警告:尝试呈现 我使用了这个
    【解决方案3】:

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

    【讨论】:

      【解决方案4】:

      如果您使用的是故事板:使用这个

      instantiateViewControllerWithIdentifier

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

      设置 Storybaord ID,Check Here

      【讨论】:

      • 我没有故事板
      【解决方案5】:

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

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

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

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

      希望对你有帮助!

      【讨论】:

      • 我使用了这个代码。它不工作。我正在调用一个视图控制器到welcomepage控制器,但它没有进入那个屏幕。两者都是xib而不是故事板
      • 只是为了排除这种情况:尝试将 ^(void){} 替换为 NULL。另一种可能性是您正在使用情节提要:如果这样做,您应该更改创建视图控制器实例的方式。请告诉我你是否这样做以及我建议的编辑结果是什么。
      • 警告:尝试在 上显示 ,其视图不在窗口层次结构中!欢迎页面未出现,我在 viewDidLoad 方法中使用此代码
      • 我更新了我的答案,因为您给我的错误确认您正在提前加载 viewController。请告诉我它是否有效。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-12-31
      • 2019-07-03
      • 2015-10-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多