カテゴリのリストをロードするテーブル ビューで使用しているカスタム セルがあり、アイテムを選択すると、そのカテゴリの製品をリストする次のビューに移動するはずです。
問題は、このセルを独自の xib ファイルで作成し、カスタム クラスを作成したことです。メイン ストーリーボードのプロトタイプ セルをセグエに接続しようとすると、機能しません。
didSelectCellForRowAtIndexPath でセグエを呼び出すと、最初にタップしたセル以外の別のセルを選択したときにのみセグエが実行されます。ただし、タップされた最初のセルから情報をロードし、2 番目のセルからロードしません。
ビュー コントローラのコードの一部を次に示します。
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *qrTableIdentifier = @"QRTableCell";
QRTableCell *cell = (QRTableCell *)[tableView dequeueReusableCellWithIdentifier:qrTableIdentifier];
if(cell == nil){
NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"QRTableCell" owner:self options:nil];
cell = [nib objectAtIndex:0];
}
QRDoc *category = self.qrload.categories[[indexPath row]];
cell.nameLabel.text = category.data.category;
cell.nameLabel.textColor = [UIColor performSelector:NSSelectorFromString(category.data.color)];
cell.bulletImage.image = category.bullet;
return cell;
}
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
NSLog(@"Preparing for seque");
if ([[segue identifier] isEqualToString:@"showCategorySegue"]) {
NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow];
//QRDoc *category = self.qrload.categories[[sender row]];
QRDoc *category = self.qrload.categories[[indexPath row]];
NSLog(@"Loading in new category");
QRCatViewController *catVC = [segue destinationViewController];
catVC.selectedCategory = category.data.category;
catVC.categoryColor = category.data.color;
}
}
そして、私が問題があると思う場所であるテーブルビューセルについて。
- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
{
self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
if (self) {
// Initialization code
}
return self;
}
- (void)setSelected:(BOOL)selected animated:(BOOL)animated
{
[super setSelected:selected animated:animated];
// Configure the view for the selected state
}
現在、セル自体はイメージビューとラベルのみで構成されているため、何が問題なのかわかりません。これを正しく機能させるには、プログラムでセルを作成する必要がありますか?