2014-09-05 44 views
8

我是一名初學者,學習Swift的程序員。首先發布在這裏。錯誤:UIView的窗口不等於另一個視圖的窗口

額外的信息,但也許不必要
在此應用我創建,用戶主視圖控制器上選擇一個圖像,並將其傳遞到所述第二視圖控制器。在那裏圖像被分解成碎片,並且這些碎片被放置在單獨的UIImageView中。目標是通過交換圖像來使它們按正確順序排列。

一切工作正常,它在模擬器中運行良好。但是,我試圖添加基本的動畫(移動UIImageViews),但他們沒有執行。我知道我擁有正確的動畫語法,因爲我在另一個項目中測試了代碼。

主要問題
當我從我的主視圖控制器第二視圖控制器導航,錯誤會立即出現在控制檯中。這就是它說的:

2014-09-04 17:51:33.489 TileGame [79951:95150647] UIView:0x7f7fe9c84600; frame =(0 0; 320 568); autoresize = W + H; layer = CALayer:0x7f7fe9c848d0 >>的窗口不等於TileGame.GameScreen:0x7f7fe9dc6bc0>的視圖窗口!

我找不出它是什麼意思,但它似乎不會導致任何問題,除了阻礙動畫。有任何想法嗎??

看起來像這個人有類似的錯誤信息,但也許比我的應用程序更復雜。 Modal viewcontroller UI not responsive after presentViewController:animated:completion:

這是我在GitHub上整個項目:https://github.com/pakalewis/Parker-Lewis-CF/tree/master/TileGame

感謝

回答

26

你似乎有iOS的編程範式的一些基本誤解。你有連接到你的按鈕,但你也可以在代碼中調用performSegue。當你有一個連接到控件的segue時,你不需要任何代碼(並且不應該有任何代碼)來導致segue執行。你也不應該回到以前的視圖控制器,而是使用一個segue,而不是一個unwind segue;你並沒有真正回頭,你正在創建一個你認爲要回去的控制器的新實例。這會導致控制器的積累(因爲沒有將被釋放)直到你的應用程序耗盡內存。因此,你應該從MainScreen中刪除函數letPlayButton:並且在故事板中刪除它(附加到那個按鈕上的segue就是你所需要的)。

刪除你去「背」,從GameScreen到MainScreen的SEGUE,並在backToMainScreen代碼改變這一點,

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

該訣竅。錯誤信息必須來自於創建多個控制器在彼此之上。我剛剛開始使用iOS的東西和編程,所以這些問題一直讓我感到困惑 - 現在變得更有意義。感謝您花時間回答! – paka 2014-09-05 08:26:24