登录模式视图未显示在拆分视图上

Posted

技术标签:

【中文标题】登录模式视图未显示在拆分视图上【英文标题】:Login Modal view not showing over a splitview 【发布时间】:2012-02-22 11:51:16 【问题描述】:

我一直在寻找一些代码,它会在加载其他视图之前首先显示登录模式窗口。

我创建了一个登录笔尖,并在 applicationDidFinishLaunching appdelegate 中使用以下代码:

    [window addSubview:splitViewController.view];
    IntroView *introViewController=[[[IntroView alloc] initWithNibName:@"IntroView" bundle:nil]autorelease];
    [introViewController setModalPresentationStyle:UIModalPresentationFullScreen] ;
    [self.splitViewController presentModalViewController:introViewController animated:NO];
    [window makeKeyAndVisible];
...

运行此程序时,模式窗口不显示,但当我 NSLog 时它会被加载。 知道为什么它没有显示吗?

【问题讨论】:

【参考方案1】:

我的应用以拆分视图开始,如果没有活动会话(在核心数据实体中定义),则会打开一个模式登录窗口。 将 viewDidAppear 方法添加到您的初始详细视图控制器。 为新的登录视图控制器创建模态序列。 在登录视图中执行登录内容,然后使用“[self dismissModalViewControllerAnimated: YES];”将其关闭

- (void)viewDidAppear:(BOOL)animated<br>


[super viewDidAppear:animated];

    // Check if a existing session is open, if not the login screen will appear.
    // When user logs on an open session record is added to the table.  Closed on user logout.

    userProfile = [LogonSessionManager getCurrentPtuser:managedObjectContext];
    if(userProfile == nil)
    [self performSegueWithIdentifier:@"login" sender:self]; 
     else 
        // We have a user - do user config display stuff
        

【讨论】:

【参考方案2】:

@greentor:你的答案并不完全正确。正确的模态序列应该来自主拆分视图。这意味着您必须调用 DetailViewController#viewDidAppear:

[self.splitViewController performSegueWithIdentifier:@"login" sender:self.splitViewController];

【讨论】:

那么登录成功后怎么关闭loginviewcontroller呢?

以上是关于登录模式视图未显示在拆分视图上的主要内容,如果未能解决你的问题,请参考以下文章

UISearchController 中的 searchBar 在 iPad 上的拆分视图上未正确显示

Swift 故事板:拆分视图控制器在 MacOS 上未正确显示

测试给定的 iPhone 是不是支持展开模式下的拆分视图

拆分视图控制器偶尔会在 iOS 13 上的 iPhone 上显示详细视图

iOS:在拆分视图的主(根)视图之上显示一个新的模式视图

在拆分视图中,当应用程序以横向模式启动时如何将视图调整到屏幕