警告:尝试呈现----谁不在窗口层次结构中!在Swift和一个VAR中未转移



我有一个带有许多故事板和许多类似于下面的应用程序的应用程序 - 除了我下面显示的一个应用程序都很好。两个问题:1.我得到警告2.一个var不会转移

override func prepare(for segue: UIStoryboardSegue, sender: Any!) {
    if (segue.identifier == "goToDetails") {
        let nav3 = segue.destination as! UINavigationController
        let svc3 = nav3.topViewController as! ActivityDetailTableViewController
        svc3.majCat = majCat //Pass the category
        svc3.subCat2 = subCat
        print(subCat)
        svc3.me = me
    }

var subcat是问题 - 打印显示在调用ActivityDetailtableViewController之前具有值但是随后消失了 - 我尝试了一切 - 重命名等,没有任何帮助 - 其他2 var很好。

"丢失" var的问题是一个简单错误的结果 - 一个很容易犯下的 - 我从桌子行中而不是从故事板上划分,而我的segue的准备看起来像: 覆盖弹性准备(用于segue:uistoryboardsegue,发件人:任何!){

因此,表行segue在uistoryboardsegue之前执行!警告问题仍然存在 - 我确信它是因为我的桌面被嵌入了视图中。

在您的代码中,视图控制器的视图仅创建但未添加到任何视图层次结构中。如果要与视图控制器的加载一起呈现,则在viewWillAppear(_:)viewDidAppear(_:)中实现它是最安全的。

当视图控制器试图打开(现在/推)另一个视图 来自ViewDidload的控制器(在出现自己的视图/加载之前),它将显示这样的 警告。

请参阅,有关:UiviewControllerRansition

的更多详细信息。

最新更新