我在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 对我有什么想法吗?
答案 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。