ios - 模态显示第二个 ViewController 后删除 ViewController

标签 ios uiviewcontroller

我的应用程序中的伙计们,我在应用程序委托(delegate)方法中有一些代码 application:didFinishLaunchingWithOptions:确定初始 View Controller 是否应为 LoginViewControllerMainViewController .

如果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 中方法,但仍然没有运气,它没有用。

我做错了什么?如何从内存中删除底层 LoginViewControllerMainViewController模态呈现?

最佳答案

如果您希望登录 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/

相关文章:

ios - 动画移除带有约束的 UIView

ios - 在我的简单案例中 #import 和 @class 之间的区别

ios - 在 View Controller 生命周期中更新约束的位置

ios - 如何计算mkmapview上的实际道路距离?

android - PayPal 如何支持未在支持中列出的货币?

ios - 如何处理高度依赖当前位置的应用程序中的位置拒绝?

ios - UITableViewController 中的 customCell UITextField 在运行时 swift 不显示

Swift - performSegue 导致 ViewController 在 prepareForSegue 传递数据之前加载

ios - 出现新 Controller 后 Controller 不会取消初始化

ios - 一次关闭多个模态视图 Controller 时的视觉伪像