0

UITableViewCell を拡張して実装するカスタム UITableViewCell がありますMFMailComposeViewControllerDelegate。(つまりUITableViewCell<MFMailComposeViewControllerDelegate>)。

カスタム テーブル セルでボタンがクリックされると、mailController にpresentModalViewController. その後、ユーザーは電子メールを入力するか、キャンセルすることができます。すべてが機能します。

しかしdidReceiveMemoryWarning、mailController が存在するときに が呼び出され、mailController が閉じると、アプリがクラッシュします。次のエラーが表示されます。

"-[CustomCell RespondsToSelector:]: 割り当て解除されたインスタンス 0xf4988b0 に送信されたメッセージ"

テーブルセルを所有するテーブルビューの割り当てが解除されたため、セルの割り当てが解除されたためだと確信していますが、これを修正するための提案はありますか? つまり、MailCompose デリゲートをテーブル セルのテーブル ビューのビュー コントローラーに切り替えることができると思いますが、そうはしません。私はむしろそれを表のセルに保持したいと思います。何か案は?

4

1 に答える 1

1

テーブル ビュー セルを MFMailComposeViewControllerDelegate として使用しないでください。セルの性質とその再利用のため、特定のインスタンスをデリゲート、特にセルが表示されているビュー コントローラーの上にあるビュー コントローラーのデリゲートとして固定することは困難です。この特定のケースでは、メモリ警告セルのキャッシュのフラッシュを引き起こしている可能性があります。

MFMailComposeViewControllerDelegate は、セルがあるテーブル ビューのデリゲートである必要があります。また、より優れた MVC パターンでもあります。

于 2012-08-23T19:19:41.497 に答える