我有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;
}
谢谢!
答案 0 :(得分:0)
您没有说清楚,因为您没有从cellForRowAtIndexPath
方法发布足够的代码,但是每次调用cellForRowAtIndexPath
时,您可能会重新创建一个UITextField(这是很多)。这也意味着你像疯了一样泄漏内存(你的应用程序会因在应用程序商店中列出而被拒绝启动)。
要解决此问题,请在xib文件中创建一个UITableView单元并将UITextField嵌入其中(将IBOutlets连接到两者),然后在为需要文本的索引路径调用cellForRowAtIndexPath
时返回UITableView单元格要出现的字段。
或者,您可以以编程方式(而不是在xib中)创建UITableView单元格,在您执行操作时初始化UITextField并将其分配给类中的变量。
无论如何,你只想分配&初始化UITextField一次, 仅 一次。如果你可以这样做,你可以调用title = txt.text;
(你还应该将你的UITextField重命名为更直观的东西,比如nameLabel
)。
Take a look at this related StackOverflow question了解如何在UITableViewCell中嵌入UITextField。