TableViewCellsのカスタマイズからカスタムサブクラスtableView:cellForRow:atIndexPath:
の使用に移行しています。UITableViewCell
これが私がそれをした方法です:
まず、空のXIBを作成し、UITableViewCell
そこにドラッグUILabel
して上に配置します。クラス(のサブクラスUITableViewCell
)を作成し、InterfaceBuilderのプロパティエディタでクラスをに設定しMyCell
ます。次に、TableViewControllerに次のように入力します。
- (void)viewDidLoad
{
[super viewDidLoad];
// load custom cell
UINib *cellNIB = [UINib nibWithNibName:@"MyCell" bundle:nil];
if (cellNIB)
{
[self.tableView registerNib:cellNIB forCellReuseIdentifier:@"MyCell"];
} else NSLog(@"failed to load nib");
}
その後、すべてのカスタムコードを消去し、tableView:cellForRow:atIndexPath:
デフォルトの行のみを残しました。
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"MyCell";
MyCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
return cell;
}
これを実行すると、各セルに1つのラベル(XIBの作成中に真ん中にドロップしたラベル)が付いたセルの束が表示されると予想しました。しかし、代わりに、真っ白な空のセルが表示され、XIBレイアウトへのコンポーネントの追加/削除は役に立ちません。
カスタムセルXIBのInterfaceBuilderでreuseIdentifierを設定したり、ビューをロードしたりするなど、さまざまなオプションを1日かけて試しましたtableView:cellForRow:atIndexPath:
が、何も役に立ちませんでした。