0

我真的很想通过使用 Interface Builder 在 XIB 中布局来完全控制节标题。

我正在使用下面的代码,但我的 titleLabel.text 在我运行应用程序时没有改变。它继续显示每个节标题的默认“标签”文本。我已经 NSLog'd headerText 的值,它确实包含正确的字符串。

有任何想法吗?谢谢

- (UIView *) tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section 
{

    CustomSectionHeaderViewController *cshvc = [[CustomSectionHeaderViewController alloc] initWithNibName:@"CustomSectionHeaderViewController" bundle:nil]; 
    id <NSFetchedResultsSectionInfo> sectionInfo = [[fetchedResultsController sections] objectAtIndex:section];

    NSString *headerText = [NSString stringWithFormat:@"%@", [sectionInfo name]];

    cshvc.titleLabel.text = headerText;

    return cshvc.view;
}

已更新答案:这是我在阅读 Tammo 的答案后得到它的工作方式

CustomSectionHeader *cshv = [[[NSBundle mainBundle] loadNibNamed:@"CustomSectionHeader" owner:self options:nil]objectAtIndex:0];

   id <NSFetchedResultsSectionInfo> sectionInfo = [[fetchedResultsController sections] objectAtIndex:section];

NSString *headerText = [NSString stringWithFormat:@"%@", [sectionInfo name]];

cshv.textLabel.text = headerText;


return cshv;
4

1 回答 1

1

免责声明:我不认为拥有这种视图的控制器是正确的做法。

您的代码的问题是控制器仅在需要时才加载视图。访问titleLabel时,视图还没有加载,所以titleLabel为nil。尝试

NSString *headerText = [NSString stringWithFormat:@"%@", [sectionInfo name]];

// Make sure that the view is loaded
UIView *result = [cshvc view];

cshvc.titleLabel.text = headerText;

return result;
于 2012-06-13T13:11:10.160 回答