web-dev-qa-db-ja.com

エラー:UIViewのウィンドウが別のビューのウィンドウと等しくありません

私はSwiftを学ぶ初心者プログラマーです。ここに最初の投稿。

追加情報ですが、おそらく不要です
私が作成したこのアプリでは、ユーザーはメインのView Controllerで画像を選択し、それを2番目のViewControllerに渡します。そこで画像は断片に分割され、それらの断片は別々のUIImageViewに配置されます。目的は、画像を交換することにより、それらを正しい順序に配置することです。

すべてが正常に機能しており、シミュレーターで正常に実行されます。ただし、基本的なアニメーションを追加しようとしています(UIImageViewsを移動しています)が、実行されていません。別のプロジェクトでコードをテストしたので、アニメーションの構文が正しいことがわかりました。

主な質問
メインのViewControllerから2番目のViewControllerに移動すると、すぐにコンソールにエラーが表示されます。これがそれが言うことです:

2014-09-04 17:51:33.489 TileGame [79951:95150647] UIView:0x7f7fe9c84600;フレーム=(0 0; 320 568);自動サイズ変更= W + H; layer = CALayer:0x7f7fe9c848d0 >>のウィンドウがTileGame.GameScreen:0x7f7fe9dc6bc0>のビューのウィンドウと等しくありません!

それが何を意味するのか理解できませんが、アニメーションを妨げる以外は問題を引き起こしていないようです。何か案は??

この人にも同様のエラーメッセージが表示されたようですが、私のアプリよりも複雑かもしれません。 presentViewController:animated:completion: の後にモーダルビューコントローラーUIが応答しない

これがGitHubでの私のプロジェクト全体です: https://github.com/pakalewis/Parker-Lewis-CF/tree/master/TileGame

ありがとう

13
paka

あなたはiOSプログラミングパラダイムについていくつかの根本的な誤解を持っているようです。ボタンにセグエがアタッチされていますが、コードでperformSegueを呼び出すこともできます。コントロールにセグエがアタッチされている場合、セグエを実行させるためのコードは必要ありません(コードを含めるべきではありません)。また、アンワインドセグエ以外は、セグエを使用して前のビューコントローラーに戻るべきではありません。あなたは本当に戻っているのではなく、あなたが戻っていると思うコントローラーの新しいインスタンスを作成しているのです。これにより、アプリのメモリが不足するまで、コントローラーが蓄積されます(割り当てが解除されることはありません)。

したがって、MainScreenから関数letsPlayButton:を削除し、ストーリーボードからも削除する必要があります(そのボタンに接続されているセグエだけで十分です)。

GameScreenからMainScreenに「戻る」予定のセグエを削除し、backToMainScreenのコードを次のように変更します。

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