所以我一直在考虑使用UITableView's
registerNib:
和[dequeueReusableCellWithIdentifier: forIndexPath:]
从UITableCellView
加载自定义NIB
。以下是我的控制器中的重要部分:
- (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
中使用自定义单元格的完美方式。
答案 0 :(得分:2)
据我所知,没有办法将文件的所有者设置为表视图控制器并将操作方法连接到xib文件中的按钮 - 我已经尝试过,它会使应用程序崩溃。通常这样做的方法是在cellForRowAtIndexPath方法的按钮上调用addTarget:action:forControlEvents:并将self作为目标传递。