错误:UIView的窗口不等于另一个视图的窗口

时间:2014-09-05 01:34:58

标签: ios xcode uiview swift window

我是一名学习swift的初学程序员。首先发布在这里。

额外信息,但可能没必要
在我创建的这个应用程序中,用户在主View控制器上选择一个图像并将其传递给第二个视图控制器。在那里,图像被分解成碎片,这些碎片被放置在单独的UIImageViews中。目标是通过交换图像将它们按正确的顺序排列。

一切正常,在模拟器中运行正常。但是,我正在尝试添加基本动画(移动UIImageViews),但它们没有执行。我知道我有正确的动画语法,因为我在另一个项目中测试了代码。

主要问题
当我从主视图控制器导航到第二个视图控制器时,控制台中会立即出现错误。这就是它的内容:

2014-09-04 17:51:33.489 TileGame [79951:95150647] UIView:0x7f7fe9c84600; frame =(0 0; 320 568); autoresize = W + H; layer = CALayer:0x7f7fe9c848d0>>' s窗口不等于TileGame.GameScreen:0x7f7fe9dc6bc0>&#39的视图窗口!

我无法弄清楚它的含义但除了阻碍动画之外似乎没有引起任何问题。任何想法??

看起来这个人有类似的错误消息,但可能比我的应用程序更复杂。 Modal viewcontroller UI not responsive after presentViewController:animated:completion:

这是我在GitHub上的整个项目:https://github.com/pakalewis/Parker-Lewis-CF/tree/master/TileGame

由于

1 个答案:

答案 0 :(得分:31)

您似乎对iOS编程范例有一些基本的误解。你有按钮附加segue,但你也可以在代码中调用performSegue。如果将segue连接到控件,则不需要任何代码(也不应该有任何代码)来执行segue。除了展开segue之外,你也不应该回到带有segue的前一个视图控制器;你真的没有回头,你正在创建一个你认为你会回到的控制器的新实例。这将导致控制器的建立(因为没有将被解除分配),直到您的应用程序内存不足。

所以,你应该从MainScreen中删除函数letsPlayButton:并在storyboard中删除它(只需附加到该按钮的segue)。

将从GameScreen“返回”的segue删除到MainScreen,并将backToMainScreen中的代码更改为,

@IBAction func backToMainScreen(sender: AnyObject) {
        self.dismissViewControllerAnimated(true, completion: nil)
    }