2

非常に奇妙な問題。ストーリーボードからカスタムセルを含むUITableViewControllerがあります。何らかの理由で、セルがTableViewに表示されません。いくつかのブレークポイントといくつかのログメッセージを設定すると、データの取得がわかり、セルにメモリアドレスがあるので、nilではないことがわかります。他に何を確認すればよいかわかりません。

何らかの理由でUPDATEを実行すると、セルの非表示プロパティがYESに設定されているため、cell.hidden = NOを追加しましたが、まだ表示されません。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
NSString *CellIdentifier;
if(indexPath.section == 0) {
    CellIdentifier = @"HeaderCell";
} else {
    CellIdentifier = @"ConnectedGoalCell";
}

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];

if(indexPath.section == 0) {
 //Section 0 Formatting.....displays OK
} else {
 //This is the cell that doesn't appear in the tableView

    UILabel * nameLabel = (UILabel*)[cell viewWithTag:10];
    UILabel * dateLabel = (UILabel*)[cell viewWithTag:11];

    NSDateFormatter * formatter = [[NSDateFormatter alloc] init];
    formatter.timeZone = [NSTimeZone defaultTimeZone];
    [formatter setDateFormat:@"MM/dd/yyyy"];
    Goal * goal = [connectedGoals objectAtIndex:indexPath.row];
    nameLabel.text = goal.name;
    dateLabel.text = [formatter stringFromDate:goal.goal_date];
    //Log said that cell HIDDEN was YES. Changed to no here but still no effect
     //<UITableViewCell: 0xa288e30; frame = (0 389; 320 44); autoresize = W; layer = <CALayer: 0xa292a80>
    cell.hidden = NO;
    NSLog(@"CELL TYPE : %@ AT %@", indexPath, CellIdentifier);
    //Logs::  CELL TYPE : <NSIndexPath 0xc3917d0> 2 indexes [1, 0] AT ConnectedGoalCell

    NSLog(@"%@", cell);
    //Logs::  CELL TYPE : <UITableViewCell: 0xc195ba0; frame = (0 389; 320 44); hidden = YES; autoresize = W; layer = <CALayer: 0xc171620>

}

return cell;
}
4

3 に答える 3

1

ストーリーボードに新しい TableViewController を作成し、カスタム ビューを再度セットアップする必要があり、すべてが機能するようになりました カスタム セルの 1 つには約 20 個のボタンがあり、幸いなことに、面倒に再作成する必要はなく、それらを貼り付けることができましたまた。非常に奇妙なエラーですが、現在は機能しています!

于 2012-12-27T15:56:42.830 に答える
0

メソッドを使用していdequeueReusableCellWithIdentifier:forIndexPath:ます (メソッドを使用してdequeueReusableCellWithIdentifier:をチェックするのではなく)。つまり、nilのいずれかを呼び出す必要があります。ドキュメントから:register*:forCellReuseIdentifierviewDidLoad

重要: このメソッドを呼び出す前に、 registerNib:forCellReuseIdentifier:または registerClass:forCellReuseIdentifier:メソッドを使用してクラスまたは nib ファイルを登録する必要があります。

于 2012-12-25T17:49:00.423 に答える
0

ログを読む

セルタイプ: UITableViewCell: 0xc195ba0; フレーム = (0 389; 320 44); 隠し=はい; 自動サイズ変更 = W;

なぜそれが隠されているのかはわかりませんが、明らかにすべきではありません。

cell.hidden = NO;
于 2012-12-25T17:08:03.620 に答える