Swift - 警告:尝试显示其视图不在窗口层次结构中

时间:2014-12-24 04:17:08

标签: ios swift xcode6

当我点击SecondViewController中的后退按钮时,我遇到了这个问题。

2014-12-24 12:08:58.838 UPASS[5158:71438] Warning: Attempt to present <APPNAME.ThirdViewController: 0x7ae6bcc0> on <APPNAME.SecondViewController: 0x7af72060> whose view is not in the window hierarchy!

import UIKit

class SecondViewController: UIViewController {

    @IBAction func btnSubmit(sender: AnyObject) {
        let storyBoard : UIStoryboard = UIStoryboard(name: "Main", bundle:nil)

        let thirdViewController = storyBoard.instantiateViewControllerWithIdentifier("successView") as ThirdViewController
        self.presentViewController(thirdViewController, animated:true, completion:nil)
    }

    @IBAction func btnBack(sender: AnyObject) {
        let storyBoard : UIStoryboard = UIStoryboard(name: "Main", bundle:nil)

        let firstViewController = storyBoard.instantiateViewControllerWithIdentifier("methodView") as FirstViewController
        self.presentViewController(firstViewController, animated:true, completion:nil)

    }

    override func viewDidLoad() {
        super.viewDidLoad()

        self.view.backgroundColor = UIColor(patternImage: UIImage(named: "bgCreateUser.jpg")!)
        // Do any additional setup after loading the view.
    }


}

请指教。感谢。

4 个答案:

答案 0 :(得分:3)

btnBack应该回到早期的视图控制器吗?如果是这样,请使用:

返回上一个实例,而不是呈现新实例

dismissViewControllerAnimated(true, completion:nil)

答案 1 :(得分:3)

我所做的是删除SecondViewController内的所有按钮并将其添加回来。我的错误是我从其他地方复制它。

答案 2 :(得分:1)

错误消息抱怨&#34; ThirdViewController&#34;,&#34; btnBack&#34;方法,但在btnSubmit方法中引用。

这表明当你点击&#34;后退按钮&#34;时,可能都会调用btnBack和btnSubmit。如果您将其中一个作为操作连接,然后将另一个方法连接到同一个按钮,则会发生这种情况。

通过选择Interface Builder(故事板编辑器)中的按钮验证您是否只连接了其中一个,然后使用Connections Inspector(Command + Option + 6)并确保其中只有一个连接到该按钮。

答案 3 :(得分:0)

从嵌入容器的视图控制器执行segue时,开发人员可能会收到此警告。

有用的解决方案: 使用来自容器父级的segue,而不是容器的视图控制器(例如后退按钮)