我的应用程序中的伙计们,我在应用程序委托(delegate)方法中有一些代码 application:didFinishLaunchingWithOptions:
确定初始 View Controller 是否应为 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
从内存中所以在 viewWillApper:animated:
MainViewController
的方法我使用此代码删除(或至少尝试删除)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>
我也试过打电话 [self dismissViewControllerAnimated:NO completion:nil]
在 presentViewController:animated:completion
的完成 block 中方法,但仍然没有运气,它没有用。
我做错了什么?如何从内存中删除底层 LoginViewController
当MainViewController
模态呈现?
最佳答案
如果您希望登录 Controller 消失,请不要显示您的主视图 Controller ,只需将其设为窗口的 Root View Controller 即可。
UIStoryboard *storyBoard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
FSMainViewController *vc = (MainViewController *)[storyBoard instantiateViewControllerWithIdentifier:@"MainViewController"];
Self.window.rootViewController = VC;
关于ios - 模态显示第二个 ViewController 后删除 ViewController,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22002538/