【发布时间】:2014-02-25 01:03:57
【问题描述】:
在我的应用程序中,我在应用程序委托方法 application:didFinishLaunchingWithOptions: 中有一些代码,用于确定初始视图控制器应该是 LoginViewController 还是 MainViewController。
如果首先显示 LoginViewController 并且用户成功登录,我将使用这段代码以模态方式显示 MainViewController:
UIStoryboard *storyBoard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
FSMainViewController *vc = (MainViewController *)[storyBoard instantiateViewControllerWithIdentifier:@"MainViewController"];
vc.loginViewController = self;
[self presentViewController:vc animated:YES completion:nil];
在屏幕上显示MainController 之后,我接下来要做的是从内存中删除LoginViewController,因此在MainViewController 的viewWillApper:animated: 方法中,我使用此代码删除(或在至少尝试)LoginViewController:
- (void)viewDidAppear:(BOOL)animated
{
[super viewDidAppear:animated];
if (self.loginViewController) {
[self.loginViewController dismissViewControllerAnimated:NO completion:nil];
}
}
问题是此代码会导致奇怪的行为,例如从屏幕上删除 MainViewController 并且此错误消息显示在控制台中。
Unbalanced calls to begin/end appearance transitions for <LoginViewController: 0xb06e350>
我也尝试在 presentViewController:animated:completion 方法的完成块中调用 [self dismissViewControllerAnimated:NO completion:nil] 但仍然没有运气,它没有工作。
我做错了什么?当MainViewController 模态呈现时,如何从内存中删除底层LoginViewController?
【问题讨论】:
标签: ios uiviewcontroller