我在每行上都使用两个带有UITableViewUITextFields来设置密码和确认密码。

我想使用页脚部分来显示密码是否匹配或太短等。

我在用着..

[[self passcodeTableView]reloadSections:[NSIndexSet indexSetWithIndex:0]
                withRowAnimation:UITableViewRowAnimationFade];


为了刷新页脚文本以及我在其他地方设置的NSString。

但是,当我调用reloadSections时,它会强制将UITextFields重新添加到cellForRowAtIndexPath中。

我以为if (cell == nil)会阻止重新绘制单元格,但显然不会。

我在这里做错了什么?

最佳答案

创建一个变量来存储文本,并可以在对象中访问它。将此添加到您的YourClass.m:

@interface YourClass () {
     UILabel *footerLabel;
}

@end


将此方法添加到您的类中:

- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section
{
    if (!footerLabel) {
        footerLabel = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, tableView.bounds.size.width, 0.0)];
    }

    return footerLabel;
}

- (float)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section
{
    return 60.0;
}


然后,当您想更改文本时,只需更新footerLabel:

footerLabel.text = @"Your new text";

08-27 19:17