テーブルビューでセルにデータを入力しようとしています(UITableViewの上のセグメント化されたコントロールで、ストーリーボードで作成された異なる要素を持つ2つのカスタムタイプのセルがあり、識別子「info_cell」と「person_cell」があります。何をロードするかを決定します[tableViewリロード]) . セル内の UILabels にアクセスしようとすると、ラベルが null であることがわかります。
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
NSString *CellIdentifier = (viewType == INFO_VIEW) ? @"info_cell" :@"person_cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
}
if(viewType == INFO_VIEW){
NSLog(@"INFO = %@", info_text_some_string);
UILabel *lblInfo = (UILabel *)[cell viewWithTag:200];
[lblInfo setText:info_text_some_string];
}
else{
// there is part for person
}
return cell;
}
テーブル内にプロトタイプ セルが 1 つしかない場合も同じコードが機能します (UITableView は UIVewController 内にあります)。ここで問題になる可能性があるのは、100 回チェックしました。セル識別子は問題ありませんが、ラベル タグは 200 です。
これは UISegmentControl のアクションです
- (IBAction)changeView:(id)sender {
UISegmentedControl *segmentedControl = (UISegmentedControl *) sender;
NSInteger selectedSegment = segmentedControl.selectedSegmentIndex;
if (selectedSegment == 0) {
viewType = INFO_VIEW;
}
else{
viewType = PERSON_VIEW;
}
[tableView reloadData];
}
tableView に必要なメソッドを追加し、デリゲート i データソースに接続しました。なぜそれが null なのか、誰にも分かりますか?