我可以像这样使用UITableviewCell吗?

时间:2011-07-15 11:16:32

标签: iphone ios4 uitableview

通常在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";

    } 

这会有用吗?文本是否会显示在单元格的标签上?实际上它对我不起作用。任何人都帮助我完美地完成这项工作。提前谢谢。

4 个答案:

答案 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];