【问题标题】:Loading another UIView directly from the main ViewController直接从主 ViewController 加载另一个 UIView
【发布时间】:2011-11-29 23:13:05
【问题描述】:

我正在创建一个应用程序。在主 ViewController 中,我创建了菜单。但我希望在菜单可见之前出现一个登录屏幕(UIView)。

但由于菜单在我运行应用程序后立即加载,因此我决定创建另一个 UIView 控制器并将其加载到主 ViewController 之上。

因此,在我的主 ViewController viewDidLoad 的末尾,我添加了以下代码以在该视图之上打开登录视图

LoginPageView *loginPageView = [[LoginPageView alloc] initWithNibName:@"LoginPageView" bundle:nil];
loginPageView.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
[self presentModalViewController:loginPageView animated:YES];  

据我所知,该代码的目的是呈现另一个视图,但不幸的是登录视图没有出现。只有主 ViewController 加载。 任何人都可以帮助我吗?你知道我到底想要什么吗?

非常感谢

【问题讨论】:

    标签: iphone ios ipad


    【解决方案1】:

    viewDidLoad 方法中,视图存在,但不能保证视图已经是应用程序视图层次结构的一部分。事实上,几乎没有。

    您可以尝试在viewWillAppear:viewDidAppear: 中获取该代码。

    【讨论】:

    • 你的方式很好,但仅在 ViewDidAppear 中,因此会在瞬间显示菜单。有更好的方法吗?或者我必须使用主 ViewController 作为登录屏幕并使用第二个 ViewController 作为菜单?
    • 快速修复:将所有子视图设置为隐藏,直到 viewDidAppear: 发生。或者,如果您不为模态转换设置动画,但我不确定。
    【解决方案2】:

    制作一个 UINavigationController。将其用作窗口的根视图控制器。将 UINavigationController 设置为不显示导航栏。

    将导航控制器的子视图控制器设置为您的登录视图控制器。

    当用户登录成功后,创建你的主视图控制器并推送它,如下所示:

    MainViewController *mainVC = [[MainViewController alloc] initWithWhatever...];
    [self.navigationController pushViewController:mainVC animated:YES];
    

    当用户注销时,您可以这样做以返回登录 VC:

    [self.navigationController popViewControllerAnimated:YES];
    

    【讨论】:

      猜你喜欢
      • 2011-10-28
      • 1970-01-01
      • 2017-05-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多