1

iPhone と iPad の両方のストーリーボードに 1 つのクラス (DetailCell) を使用しようとしています。次のコードがあります。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
        static NSString * cellIdentifier = @"DetailCell";
        DetailCell * detailCell = [self.tableView dequeueReusableCellWithIdentifier:cellIdentifier];
        if (detailCell == nil) {
            detailCell = [[DetailCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"DetailCell"];
        }
        //cell customization here...
    return detailCell;
}

iPad では完全に機能しますが、iPhone では機能しません。すべての識別子、接続、およびクラスが適切に設定されています。また、両方のボードのセルを消去して、新しいセルを作成しようとしました。私が実際に持っているもの:

iPad の場合:

両端キューでセルを取得しているため、必要に応じて if に入らず、セルを返します。

iPhone の場合:

deque は nil を返し、if に行くと DetailCell を返しますが、カスタマイズは機能しません。(すべてのアウトレットは、値を設定する前後でゼロです) この動作の理由は何ですか?

PS iOS5 と iOS6 の両方で

4

1 に答える 1

0

これを試して。static NSString * cellIdentifier = @"DetailCell";

DetailCell * detailCell = [self.tableView dequeueReusableCellWithIdentifier:cellIdentifier];

if (detailCell == nil)
{
    detailCell = [[DetailCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"DetailCell"];

    NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"YourNibName" owner:self options:nil];
    for (id oneObject in nib) if ([oneObject isKindOfClass:[DetailCell class]])
        cell = (DetailCell *)oneObject;
}
//cell customization here...
return detailCell;
于 2013-04-03T10:16:27.997 に答える