【问题标题】:Hide UIViewController when presenting modal viewcontroller呈现模态视图控制器时隐藏 UIViewController
【发布时间】:2018-05-01 23:57:18
【问题描述】:

我有一个主要的UIViewController

当用户未登录时,在主视图控制器viewDidAppear 的主体中,我呈现了一个登录modal,没有任何动画。

问题是,在真实设备上进行测试时,我可以立即看到呈现的 viewController。

我显然是通过在主视图控制器中添加 viewDidLoad 来解决的,

self.view.isHidden = true;

但我想知道是否有更好的解决方案(例如,在这种情况下,当用户成功登录并关闭模式时,我必须记住将false 分配给呈现的UIViewController.view.isHidden)。

感谢任何建议:-)

【问题讨论】:

  • 为什么不用UIViewController 启动应用程序,它看起来像您的启动屏幕,然后显示登录控制器或登录用户的控制器?
  • 主要是登录界面可以被很多其他的uiviewcontrollers呈现
  • @3000 您可以在登录屏幕上实现另一个故事板。易于管理!
  • @Mannopson:另一个故事板?这将如何解决许多不同视图控制器呈现的相同视图控制器的问题?您一定不能想象应用程序入口处的登录屏幕:-)
  • 另一种解决方案是在某些加载时间(init、viewDidLoad 等)将 LoginVC 添加为覆盖整个父 vc 的子 vc

标签: ios uiviewcontroller modalviewcontroller


【解决方案1】:

你可以这样做。

在 MainVC viewDidLoad 中:

if (user.isNotLoggedIn) {
  LoginVC *loginVC = [LoginVC new];
  [self addChildViewController:loginVC];
  loginVC.view.frame = self.view.bounds;
  [self.view addSubview:loginVC.view];
  [loginVC didMoveToParentViewController:self];
}

登录后在 LoginVC 中:

    [self willMoveToParentViewController:nil];
    [self.view removeFromSuperview];
    [self removeFromParentViewController];

但最好通过委托从 MainVC 中删除 LoginVC 并添加一些视图动画,如淡入淡出或滑动。

【讨论】:

    猜你喜欢
    • 2013-06-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-03
    • 1970-01-01
    相关资源
    最近更新 更多