我在单元格上添加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
有什么想法吗?

最佳答案

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

附带说明:您在哪里定义myLoc?看来您正在尝试在ViewController上设置属性。这样,您将始终覆盖该属性。为此,您根本不需要属性,因此只需在函数范围内像myLoc一样在本地定义UILabel *myLoc

关于ios - 访问CellForRowAtIndexPath中的UITextField,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10487814/

10-10 20:29