访问CellForRowAtIndexPath中的UITextField

时间:2012-05-07 19:22:16

标签: ios iphone xcode uitextfield

我在Cell上添加了一个UITextField。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath     *)indexPath
{
  static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
    cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault      reuseIdentifier:CellIdentifier];
}


myLoc = [[UITextField alloc] initWithFrame:CGRectMake(35, 10, 250, 40)];
myLoc.adjustsFontSizeToFitWidth = YES;
myLoc.textColor = [UIColor blackColor];
myLoc.textAlignment = UITextAlignmentCenter;
myLoc.placeholder = @"Enter Location";
myLoc.returnKeyType = UIReturnKeyDone;
myLoc.autocorrectionType = UITextAutocapitalizationTypeNone;
myLoc.tag = indexPath.row;
myLoc.delegate = self;
[myLoc setEnabled:YES];
[cell addSubview:myLoc];

return cell;
}

并在textFieldShouldReturn中,我将文本字段中的文本写入可变数组,并存储在nsuserdefaults中。

-(BOOL)textFieldShouldReturn:(UITextField *)textField{

[myLoc resignFirstResponder];

[locationArray addObject:textField.text];
locName = [NSUserDefaults standardUserDefaults];
[locName setObject:locationArray forKey:@"textName"];
[locName synchronize];

NSLog(@"Done pressed %@",myLoc.text);

return YES;

}

...但myLoc.text始终为null 对我有什么想法吗?

3 个答案:

答案 0 :(得分:2)

在委托方法中,不要使用myLoc来引用textField,而是使用作为函数参数提供的实际textField指针。这个实际应该指向正确的文本字段,因此textField.text应该具有正确的值。

旁注:你在哪里定义myLoc?看起来你正在尝试在viewcontroller上设置属性。这样你就会总是覆盖属性。为此,您根本不需要属性,因此只需在函数范围内本地定义myLoc,如UILabel *myLoc

答案 1 :(得分:1)

您最好创建自己的自定义UITableViewCell。你可以在这里看到如何创建一个: tutorial

尝试着手解决现有的UITableViewCell是最困难的,也是最糟糕的。你最好使用自定义单元格。

答案 2 :(得分:0)

您的文本永远不应为NULL,因为它是NSString。你确定你在谈论文本字段中的文字吗?

添加NSLog时输出的内容(@%“@”,textField.text);你的shouldReturn方法?

您确定已输入文字字段吗?此外,即使没有打字,你应该得到@“”而不是nil。