質問は簡単ですUITableViewCell
。Xibファイルからカスタムをどのようにロードしますか?そうすることで、InterfaceBuilderを使用してセルを設計できます。メモリ管理の問題があるため、答えは明らかに単純ではありません。このスレッドは問題に言及し、解決策を提案していますが、NDAリリース前であり、コードが不足しています。これは、決定的な答えを提供せずに問題を議論する長いスレッドです。
これが私が使用したいくつかのコードです:
static NSString *CellIdentifier = @"MyCellIdentifier";
MyCell *cell = (MyCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
NSArray *nib = [[NSBundle mainBundle] loadNibNamed:CellIdentifier owner:self options:nil];
cell = (MyCell *)[nib objectAtIndex:0];
}
このコードを使用するには、MyCell.m / .hを作成します。これは、の新しいサブクラスでUITableViewCell
あり、必要なコンポーネントを追加IBOutlets
します。次に、新しい「EmptyXIB」ファイルを作成します。IBでXibファイルを開き、UITableViewCell
オブジェクトを追加し、その識別子を「MyCellIdentifier」に設定し、そのクラスをMyCellに設定して、コンポーネントを追加します。最後に、IBOutlets
をコンポーネントに接続します。IBでファイルの所有者を設定しなかったことに注意してください。
他の方法では、ファイルの所有者を設定し、Xibが追加のファクトリクラスを介してロードされていない場合にメモリリークを警告することを推奨しています。上記をInstruments/Leaksでテストしましたが、メモリリークは見られませんでした。
では、Xibsからセルをロードするための標準的な方法は何ですか?ファイルの所有者を設定しますか?工場が必要ですか?もしそうなら、ファクトリのコードはどのように見えますか?複数の解決策がある場合は、それぞれの長所と短所を明確にしましょう...