通常在UITableView中,我们为cellForRowAtIndexPath
方法中的单元格赋值,该方法是UITableView的委托方法。在这种情况下,如果我们使用CustomTableViewCell,我们将cellForRowAtIndexPath
中的值分配为
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Cell";
CustomTableViewCell *cell = (CustomTableViewCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
[[NSBundle mainBundle] loadNibNamed:@"CustomTableViewCell" owner:self options:nil];
cell = customTableViewCell;
}
cell.label1.text = @"text1";
cell.label2.text = @"text2";
// Configure the cell...
return cell;
}
这种使用CustomCell的方式很常见。文本将显示在单元格的标签上,但我需要以另一种方式使用CustomCell进行一些澄清。我在MainViewController中有一个方法,如下面的
- (void)methodInMainViewConroller {
CustomCell *customCell = [[CustomCell alloc] init];
[customCell methodInCustomCell];
[tableView reloadData];
}
在CustomCell中,我将方法定义为
- (void)methodInCustomCell {
self.label1.text = @"text1";
self.label2.text = @"text2";
}
这会有用吗?文本是否会显示在单元格的标签上?实际上它对我不起作用。任何人都帮助我完美地完成这项工作。提前谢谢。
答案 0 :(得分:1)
你可以试试这个
- (void)methodInMainViewConroller {
NSIndexPath *indexPath = [NSIndexPath indexPathForRow:row inSection:section];
CustomCell *customCell = (CustomCell *)[self.tableView cellForRowAtIndexPath:indexPath];
[customCell methodInCustomCell];
}
更新:我刚刚意识到,滚动表格视图后,您的标签将重置为之前的值。它可能不会这样,但试一试。
答案 1 :(得分:0)
仔细查看您的代码。设置标签后,您永远不会对该单元格执行任何操作。无论如何,tableview如何知道使用你的细胞以及把它放在哪里?
答案 2 :(得分:0)
它不起作用,因为您alloc/init
并且处理的单元格是完全不同的对象。但是,您可以将该单元格存储为ivar,并始终返回给定indexPath
的单元格。
答案 3 :(得分:0)
此方法不起作用,因为您只为tableView
中的单元格创建的自定义单元格调用它。
你需要这样的东西:
CustomCell *customCell = [tableView cellForRowAtIndexPath:indexPath];
[customCell methodInCustomCell];