0

セルに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です。

4

3 に答える 3

2

デリゲート メソッドではmyLoc、textField を参照するために使用するのではなく、関数のパラメーターとして提供される実際のtextFieldポインターを使用します。これは実際には正しいテキストフィールドを指す必要があるため、textField.text には正しい値が必要です。

補足: どこで を定義しますmyLocか? ビューコントローラーにプロパティを設定しようとしているようです。このようにして、常にプロパティを上書きします。このためにプロパティはまったく必要ないのでmyLoc、関数スコープでローカルに定義するだけですUILabel *myLoc

于 2012-05-07T19:44:37.903 に答える
1

独自のカスタム UITableViewCell を作成することをお勧めします。ここで作成方法を確認できます: チュートリアル

既存の UITableViewCell に追加しようとすることは、よくても難しく、最悪の場合は不可能です。カスタムセルを使用したほうがよいでしょう。

于 2012-05-07T19:48:34.863 に答える
0

NSString であるため、テキストを NULL にすることはできません。テキストフィールドのテキストについて話しているのですか?

NSLog(@%"@", textField.text); を追加したときの出力 あなたの shouldReturn メソッドに?

テキストフィールドに入力したことは確かですか? また、入力しなくても、nil ではなく @"" を取得する必要があります。

于 2012-05-07T19:44:15.353 に答える