【问题标题】:iOS refresh Header titleiOS 刷新 Header 标题
【发布时间】:2012-02-03 05:33:20
【问题描述】:

我有一个 grouped table with 3 categories and one header above the first one 。我希望在用户输入他/她的名字后,标题标题用那个人的名字更新。在我解雇第一响应者(键盘)之后,我已将 reloadData 方法放入 textFieldShouldReturn 中。它似乎不起作用。标题标题保持不变。

-(NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section
{
    if(section == 0 ) 
    {
        if(title==nil)
            return @"Your name here...";
        else
            return title;
    }
    else return nil;
}

title 是一个NSString,它应该包含标题单元格中的文本。

以下代码来自cellForRowAtIndexPath....

UITextField *txt = [[ UITextField alloc ] initWithFrame:CGRectMake(100,10, 200, 30)];``
    txt.delegate = self;
    [cell addSubview:txt];

    if(indexPath.section==0)
    {
        if([indexPath row] == 0)
        {
            [cell.textLabel setText:@"Name"];
            title = txt.text;

        }

谢谢!

【问题讨论】:

  • 您能否修改您的原始问题以显示UITextField * txt = ... 初始化程序的调用位置/方式?现在我怀疑你经常反复调用 alloc/init 方法,因此你的 title 变量总是设置为 NULL。
  • reloadData 仅重新加载表格单元格或整个表格,包括页眉和页脚?

标签: ios header tableview title reload


【解决方案1】:

您没有说清楚,因为您没有从 cellForRowAtIndexPath 方法中发布足够的代码,但您可能会在每次调用 cellForRowAtIndexPath 时重新创建一个 UITextField(这很多)。这也意味着您正在疯狂地泄漏内存(并且您的应用将被拒绝在应用商店中列出来启动)。

要解决此问题,请在您的 xib 文件中创建一个 UITableView 单元格并将 UITextField 嵌入其中(将 IBOutlets 连接到两者),然后在为您希望文本字段的索引路径调用 cellForRowAtIndexPath 时返回 UITableView 单元格出现。

或者,您可以通过编程方式创建一个 UITableView 单元格(不在 xib 中),像在上面那样初始化 UITextField 并将其分配给您的类中的一个变量。

无论如何,您只想分配和初始化 UITextField 一次并且 一次。如果你能做到这一点,你可以打电话给title = txt.text;(你也应该把你的 UITextField 重命名为更直观的名字,比如nameLabel)。

Take a look at this related StackOverflow question 了解如何在 UITableViewCell 中嵌入 UITextField。

【讨论】:

  • 好的,我理解您的建议,但是,如何在应用程序运行时更改标题的标题?插入名称后,我希望标题更改它的文本...
  • 调用reloadData 也应该刷新标题(this related question seems to indicate that fact)...所以只需在输入名称后调用reloadData(您可以通过文本字段委托方法textFieldDidEndEditing: 检测到) )
猜你喜欢
  • 1970-01-01
  • 2011-06-23
  • 1970-01-01
  • 2015-12-11
  • 2015-11-23
  • 2010-12-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多