如何从 - (void)方法更新tableview单元格?

时间:2015-06-30 11:42:30

标签: ios objective-c uitableview

我试图从 - (void)方法或某种方式更新特定的动态单元格字体大小而不使用cellForRowAtIndexPath。这可能吗?

由于

3 个答案:

答案 0 :(得分:1)

If you know the position of the index, as follows:

First create indexPath by row at position:

 NSIndexPath *indexPath = [NSIndexPath indexPathForRow:rowIndex inSection:0];

Then access to cell:

MyCell *cell = (MyCell *)[self.tableView cellForRowAtIndexPath:indexPath];

答案 1 :(得分:0)

致电

[self.view.tableView reloadRowsAtIndexPaths:@[your_index_path] withRowAnimation:UITableViewRowAnimationAutomatic];

在你的方法中。这将导致行更新

答案 2 :(得分:0)

如果没有调用:cellForRowAtIndexPath,则无法更新单元格。 如果要更新单元格中的字体大小,请重新加载单元格。在您的cellForRowAtIndexPath方法中,添加条件语句以检查您想要不同字体大小的单元格的indexPath并编辑不同的字体大小。不要忘记添加其他条件,以便当单元格重新加载时,它将使其他单元格的字体大小正常。

但是,如果你想以某种方式。然后,您可以使用全局引用变量到单元格。但这只有在单元格显示在屏幕上时才有效。 以下是示例代码:

@interface TableViewController ()
{
    UITableViewCell *aCell;
}
@end

@implementation TableViewController

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    UITableViewCell *theCell = [tableView dequeueReusableCellWithIdentifier:@"TableViewCellIdentifier" forIndexPath:indexPath];

    if(indexPath.row == SPECIFIC_ROW_NUMBER){
        aCell = theCell;
        theCell.tag = SPECIFIC_ROW_NUMBER;
    }else if (theCell.tag == SPECIFIC_ROW_NUMBER){
        // If the cell is dequeued
        aCell = nil;
        theCell.tag = 99999; // some unused row number
    }


}

- (void)someMethod {
    if(theCell != nil){
        aCell.titleLabel.font = NEW_FONT;
    }
}
@end