0

カテゴリのリストをロードするテーブル ビューで使用しているカスタム セルがあり、アイテムを選択すると、そのカテゴリの製品をリストする次のビューに移動するはずです。

問題は、このセルを独自の 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
}

現在、セル自体はイメージビューとラベルのみで構成されているため、何が問題なのかわかりません。これを正しく機能させるには、プログラムでセルを作成する必要がありますか?

4

1 に答える 1

0

おそらく、これはただのタイプミスでした。

そのような状況では、白紙の状態から始めることを提案し、動作するコード失敗するコードを比較します。

ここに画像の説明を入力

カスタムセルを で解決するコンパクトなプロジェクトを同封しましたStoryboard。これは、個別の代替手段を提供しますXIB

UITableViewCell個別の a を参照するにXIBは、次の 1 行のコードが必要です。

tableView.register(
    UINib(nibName: "XIBSectionHeader", bundle:nil),
    forCellReuseIdentifier: "reuseIdentifier")

GitHubでこのソリューションを見つけ、 Swift Recipesで追加の詳細を見つけてください。

于 2015-09-02T06:45:31.983 に答える