在我的应用程序中,我希望有一个UIViewController将在其中保存一个UITableView。在这个 UITableView 中,我希望有一个自定义的 UITableViewCell(即我希望在这个 CELL 中定义我自己的元素 - 图像、标签和按钮 - 如下图所示)。而且...我想在情节提要中创建它们。
- 现在,在 Storyboard 中设置元素很容易。
- 我了解如何连接 UITableView 并将其设置在 UIViewController 中(包括 .h 文件中的委托并使用基本的表委托方法)。
- 我不清楚的是如何连接和控制自定义的 UITableViewCell 及其插座。我可以在UIViewController .h 和 .m 文件中创建 Outlets 和 Actions 吗?我是否需要创建一个单独的UITableViewCell.h/.m文件并在 cellForRowAtIndexPath 方法中调用它们?
谁能建议什么是满足我需求的最佳方法?
更新:这是我在使用分离的MyCell.h/m文件选项时在cellForRowAtIndexPath中使用的代码。这段代码写在ViewController.m文件中,UITableView 就是在这个文件中实现的。
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"ContentCell";
MyCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
//MyCell is the Objective-C Class I created to manage the table cells attributes.
//@"ContentCell" is what I had entered in the Storyboard>>UITableViewCell as the Cell Identifier.
if (cell == nil) {
cell = [[MyCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
//Here is the place I'm not clear about - Am I supposed to init the cell in a different way? If so, how?
}
cell.contentNameLabel.text = [self.dataArray objectAtIndex: [indexPath row]];
// this is the test I had done to check if the new "MyCell" object is actually getting what I would expect it to get. well... the text gets updated in the relevant label, so i guess it gets it
return cell;
}
运行应用程序时,使用调试器断点,我可以看到代码总是跳过“if (cell == nil)”,并且永远不会进入应该分配和启动新 MyCell 对象的代码。知道我做错了什么吗?