2012-01-05 67 views
0

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

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

titleNSString它应该包含从标题单元格中的文本。

下面的代码是从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; 

     } 

谢谢!

+0

您可以修改您的原始问题以显示“UITextField * txt = ...'初始化程序被调用的位置/方式吗?现在我怀疑你总是不停地调用alloc/init方法,因此你的'title'变量总是被设置为NULL。 – 2012-01-05 11:32:27

+0

'reloadData'只重新载入表格单元格或整个表格,包括页眉和页脚? – Teo 2012-01-05 11:37:23

回答

0

你没有说清楚,因为你没有从你的cellForRowAtIndexPath方法发布足够的代码,但是你很可能每次调用cellForRowAtIndexPath都会重新创建一个UITextField(这是很多)。这也意味着你像疯了一样泄漏内存(并且你的应用程序会被拒绝被列在应用程序商店中以启动)。

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

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

在任何情况下,你只是想的Alloc &初始化为UITextField一次只有一次。如果你可以这样做,你可以打电话title = txt.text;(你也应该把你的UITextField重命名为更直观的东西,比如nameLabel)。

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

+0

好的,我理解你的建议,但仍然如何在应用程序运行时更改标题的标题?在我插入名称后,我希望标题更改它的文本... – Teo 2012-01-05 11:59:20

+0

调用'reloadData'还应刷新标题([此相关问题似乎表明该事实](http://stackoverflow.com/questions/ 2805326/prevent-header-from-being-being-being-updated-after-calling-reloaddata))...所以只需在输入名称(可通过文本字段委托方法['textFieldDidEndEditing:']检测到'reloadData' (http://developer.apple.com/library/ios/documentation/UIKit/Reference/UITextFieldDelegate_Protocol/UITextFieldDelegate/UITextFieldDelegate.html#//apple_ref/occ/intfm/UITextFieldDelegate/textFieldDidEndEditing :)) – 2012-01-05 12:03:32