我一直在研究如何使用UITableView
的registerNib:
和 [dequeueReusableCellWithIdentifier:forIndexPath:]
来加载来自NIB
的自定义UITableCellView
。这是我从控制器中摘取的关键部分:
- (void)viewDidLoad
[super viewDidLoad];
self.tableView.bounces = NO;
[self.tableView registerNib:[UINib nibWithNibName:@"ProgramListViewCell" bundle:nil] forCellReuseIdentifier:@"Cell"];
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
TVProgramListTableViewCell *cell = (TVProgramListTableViewCell *)[tableView dequeueReusableCellWithIdentifier:@"Cell" forIndexPath:indexPath];
cell.frame = CGRectMake(0, 0, CELLWIDTH, OPENCELLHEIGHT);
cell.selectionStyle = UITableViewCellSelectionStyleNone;
cell.clipsToBounds = YES;
cell.titleLabel.text = [NSString stringWithFormat:@"herpa derp: %i", indexPath.row];
return cell;
所以我在视图加载时注册了
NIB
,然后利用它进行单元格出列。到目前为止,一切都像我期望的那样工作。我的自定义TVProgramListTableViewCell
从NIB
中正确加载,并且其IBOutlet
已连接。
NIB
包含一个按钮的视图,我希望它能触发控制器的事件。我可以将文件所有者类型设置为我的表视图控制器类,但我不知道如何实际连接文件所有者。现在,如果我使用
loadNibNamed:
并自己加载NIB
,连接文件所有者将很容易。在使用registerNib
的情况下,是否有任何方法可以实现这一点?除了无法连接文件所有者之外,这似乎是在UITableView
中使用自定义单元格的完美方式。