UINavigationController の UITableView でストーリーボードを使用しています。この UITableView では、内部プロパティを持つカスタム tableViewCell を使用しました。
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
CustomTableViewCell *cell = nil;
if (SYSTEM_VERSION_LESS_THAN(@"6.0") ) {
//iOS 6.0 below
cell = [tableView dequeueReusableCellWithIdentifier:@"Cell"];
}
else {
//iOS 6.0 above
cell = [tableView dequeueReusableCellWithIdentifier:@"Cell" forIndexPath:indexPath]; //work segue
}
上記のコードは、プッシュ セグエでうまく機能します。しかし、私が使用したときではありません
cell = [[CustomTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"Cell"]; //not work segue
セルの再利用からセルのデータを保持するために、この alloc メソッドを使用しました。
alloc と deque.. メソッドの違いです。私は何が欠けていますか?
編集) dequeReusableCell メソッドを使用しないことは、パフォーマンス上の理由で悪いことを知っています。しかし、細胞の数は多くありません。これが deque メソッドを必要としない理由です。
「動作しない」とは、クラッシュではなく、「プッシュセグエを実行しない」ことを意味します。
セルの右側の開示インジケータ アイコンを除いて、dequeReusable メソッドを使用した場合と同じようにセルを表示します。インジケーター アイコンは、ストーリーボード設定から取得されます。
そして、セルに触れると、セルは青く強調表示されますが、プッシュセグエは実行されません。
CustomTableViewCell には 4 つのプロパティがあります。それはすべてUITableViewCellとは異なります。ユーザーは DetailViewController でプロパティを設定します (プッシュ セグエはこれにつながります)。セルに IBOutlet ref がありません。MasterViewController(tableViewを持つ)では、cellForRowAtIndexPathメソッドは上記コードのCustomTableViewCellを返します。
cellForRowAtIndexPath メソッドは、CustomTableViewCell のインジケーターの左側にオン/オフ ボタンを追加し、セルのタグ番号を設定します。