私は、私のアプリケーションでUITableViewを表示するビューを持っています。このビューはnibファイルで作成され、カスタムビューコントローラを備えています。このビューのUIViewControllerサブクラスは、UITableViewのデータソースとデリゲートとして機能します。UIViewController -deallocモーダルビューコントローラを終了した後に呼び出される
私のUITableViewは、自分のデータに基づいていくつかの行を表示します。次に、最後の行に異なるテキストが表示されます: "別のものを追加..."。最後の行が選択されている場合は、(ユーザーがデータを追加できるように)モーダル・ビュー・コントローラーを提示します。モーダルビューコントローラを閉じると、元のビューが(期待どおり)再び表示され、すべてが正常に表示されます。しかし、私はこのビューと対話しようとすると、アプリケーションがクラッシュします。
いくつかのNSLog()ステートメントをUIViewController(UITableView用)に配置することから、モーダルビューが終了した直後に-deallocメソッドが呼び出されていると判断しました。これは、私がそのビューで何かをしようとすると、クラッシュを説明します。しかし、私はなぜこのビューコントローラで-deallocが呼び出されているのか分かりません。モーダルビューコントローラを閉じ
、私が持っている:モーダルビューコントローラののUIViewControllerでIBActionメソッドのコードとして
[self dismissModalViewController:YES];
を。このアクションは、対応するnibファイルの取り消しボタンに関連付けられています。
さらに、View Controller Programming Guideからの私の理解は、それ自身の中からモーダルコントローラを却下しても問題ありませんが、デリゲートを使用する方がより堅牢です。私は当初デリゲートを使用していましたが、デバッグを簡略化するためにデリゲートを取り出しました。私はデリゲートを再度チェックするようにしています。デリゲートを使うときも同じ動作が起こります。親ビューコントローラでのデリゲートの実装がある
[[self delegate] myModalViewController:self didAddObject:obj];
:
[self dismissModalViewController:YES]
誰もが前にこれを見たか起こったりすることができるものの任意の提案を持っている場合は、モーダルコントローラのアクションメソッドは、として実装されている呼び出しこれをデバッグする方法は、私は非常に感謝します。
親ビューコントローラが割り当て解除されていることを意味しますか? – BoltClock
はい、そうです。 – jmac