尝试从iOS中的显示中删除ViewController时获取黑屏

时间:2013-08-26 04:51:41

标签: ios uiviewcontroller uinavigationcontroller uibutton xib

我有一个使用故事板的iOS应用程序,我在其中显示我从.xib文件创建的视图控制器给用户。此视图控制器接受一些用户输入,但我必须将其关闭并返回主应用程序。我能够显示视图控制器,它还有一个调用方法来关闭视图控制器的按钮。我的问题是,在用户按下按钮返回主应用程序后,整个屏幕变黑。这是我的.xib视图控制器中的按钮代码,它试图从显示中删除它自己:

- (IBAction)myButtonAction:(id)sender {

    [self.view removeFromSuperview];

}

以下是我的主应用程序的视图控制器中的代码,它首先调用.xib视图控制器:

- (void) touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {

    _nextView = [[NextLandscapeViewController alloc] initWithNibName:@"NextLandscapeViewController" bundle:nil];
    [_nextView setDelegate:(id)self];
    NextNavigationController *navigationController = [[NextNavigationController alloc] initWithRootViewController:_nextView];
    [self presentViewController:navigationController animated:YES completion:nil];

}

NextNavigationController是UINavigationController的子类,我的目的是以横向模式而不是纵向模式加载_nextView。这部分工作正常。我现在关心的是在用户完成它之后解除这个viewController,并返回到主应用程序中的调用视图控制器。

我的屏幕是黑色有什么原因吗?任何人都可以看到我做错了什么,以及我如何解决这个问题?

感谢所有回复的人。

1 个答案:

答案 0 :(得分:2)

不要使用removeFromSuperview,使用[self dismissViewControllerAnimated:YES completion:nil];就像你使用pop来撤消push一样,你可以使用dismissViewController撤消presentViewController。获得黑屏的原因是因为呈现视图控制器会从窗口的层次结构中删除呈现视图控制器的视图。因此,当您从超级视图中删除视图时,除了窗口之外没有任何内容。