XCode 4.5とiOS 6を使用して、カスタムセルを含むシンプルなテーブルビューのアプリを開発しています。私はこれをiOS 5以下で100回行いましたが、何らかの理由で新しいautoLayoutシステムが多くの問題を引き起こしています。
テーブルビューとプロトタイプセルをIBでセットアップし、サブビューを追加してそれらをIBOutletsとして配線してから、デリゲートとdataSourceをセットアップしました。ただし、最初のセルがからフェッチされるたびcellForRowAtIndexPath
に、次のエラーが発生します。
***-[ShopCell layoutSublayersOfLayer:]、/ SourceCache / UIKit_Sim / UIKit-2372 / UIView.m:5776のアサーションエラー
***キャッチされない例外 'NSInternalInconsistencyException'によりアプリを終了します。理由: '-layoutSubviewsを実行した後も自動レイアウトが必要です。ShopCellの-layoutSubviewsの実装は、superを呼び出す必要があります。
私はサブクラス化されたセル(ShopCell)に-layoutSubviewsメソッドを実装していません。それを実行してスーパーコールを追加しようとしても、同じエラーが発生することを示唆しています。サブビューをIBのセルから削除し、それを標準のUITableViewCellに変更すると、すべて期待どおりに機能しますが、もちろんセルにはデータが残っていません。
私が見逃している単純なものがあることはほぼ確実ですが、私が間違ったことを示唆するドキュメントやガイドを見つけることができません。任意の助けいただければ幸いです。
編集: IBのUITableViewCellに変更して、すべてのサブビューをそのままにしてみましたが、それでも同じエラーが発生しました。
lldb [[UIWindow keyWindow] _autoLayoutTrace]
自動レイアウトを使用する場合は、デバッガー領域で試してください。