首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >警告:尝试显示视图不在窗口层次结构中的* on *- swift

警告:尝试显示视图不在窗口层次结构中的* on *- swift
EN

Stack Overflow用户
提问于 2014-09-25 01:14:57
回答 17查看 104.5K关注 0票数 86

如果数据模型中有任何已保存的数据,我会尝试显示一个ViewController。但我得到以下错误:

警告:试图显示其视图不在窗口层次结构中的* on *“

相关代码:

代码语言:javascript
复制
override func viewDidLoad() {
    super.viewDidLoad()
    loginButton.backgroundColor = UIColor.orangeColor()

    var request = NSFetchRequest(entityName: "UserData")
    request.returnsObjectsAsFaults = false

    var appDel:AppDelegate = (UIApplication.sharedApplication().delegate as AppDelegate)
    var context:NSManagedObjectContext = appDel.managedObjectContext!

    var results:NSArray = context.executeFetchRequest(request, error: nil)!

    if(results.count <= 0){
        print("Inga resultat")
    } else {
        print("SWITCH VIEW PLOX")
        let internVC = self.storyboard?.instantiateViewControllerWithIdentifier("internVC") as internViewController
        self.presentViewController(internVC, animated: true, completion: nil)
    }
}

我尝试过使用谷歌找到的不同解决方案,但都没有成功。

EN

回答 17

Stack Overflow用户

回答已采纳

发布于 2014-09-25 01:42:56

此时,在您的代码中,视图控制器的视图仅被创建,但没有添加到任何视图层次结构中。如果您希望尽快从视图控制器中显示,则为了安全起见,您应该在viewDidAppear中执行此操作。

票数 128
EN

Stack Overflow用户

发布于 2015-03-20 17:12:59

在目标c:这解决了我在mpmovieplayer上呈现视图控制器时的问题。

代码语言:javascript
复制
- (UIViewController*) topMostController
{
    UIViewController *topController = [UIApplication sharedApplication].keyWindow.rootViewController;

    while (topController.presentedViewController) {
        topController = topController.presentedViewController;
    }

    return topController;
}
票数 36
EN

Stack Overflow用户

发布于 2016-10-23 00:50:38

Swift 3

作为一个新手,我发现当前的负载模式视图可以被忽略,但如果你不需要显示模式,切换到根控制器是最好的。

我用的是这个

代码语言:javascript
复制
let storyboard = UIStoryboard(name: "Main", bundle: nil)
let vc  = storyboard?.instantiateViewController(withIdentifier: "MainAppStoryboard") as! TabbarController
present(vc, animated: false, completion: nil)

在我的tabController中使用以下代码:

代码语言:javascript
复制
let storyboard = UIStoryboard(name: "Main", bundle: nil)
let view = storyboard.instantiateViewController(withIdentifier: "MainAppStoryboard") as UIViewController
let appDelegate = UIApplication.shared.delegate as! AppDelegate
//show window
appDelegate.window?.rootViewController = view

如果您需要在多个情节提要屏幕之间切换,只需调整为视图控制器即可。

票数 36
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26022756

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档