2012-01-17 4 views
0

モデルオブジェクト(注釈インスタンス)の属性を編集するためにテーブルを使用します。テーブル内のセルは、アノテーションクラスの異なる属性に対応:UITableViewCell内のUITextFieldでクリアされない文字

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"cellAnnotation"]; 
    if (cell == nil) { 
     cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue2 reuseIdentifier:@"cellAnnotation"] autorelease]; 
    } 
    [[cell textLabel] setText:@"Category"]; 
    categoryField = [[UITextField alloc] initWithFrame:CGRectMake(90, 8, 200, 25)]; 
    [categoryField setAutocorrectionType:UITextAutocorrectionTypeNo]; 
    [categoryField setFont:[UIFont fontWithName:@"Verdana" size:15]]; 
    [categoryField setText:[[annotation category] name]]; 
    [categoryField setDelegate:self]; 
    [[cell contentView] addSubview:categoryField]; 
    [categoryField release]; 
    return cell; 

を驚くべきことに、私はコントローラのviewWillAppearメソッドでデータをリロードする場合は、その後、私は奇妙な振る舞いを取得:UITextFieldの中の文字を受賞UITextFieldの最初のレスポンダーを辞退し、そのテキストプロパティを取得するときには存在しませんが、バックスペースキーを押すとクリアされません。誰でも助けてくれますか?前もって感謝します。

答えて

1

if(cell == nil){...}句以外の表のセルにサブビューを追加しないでください。表のセルは再循環されるので、cellForRowAtIndexが呼び出されるたびに古い表を削除せずに表のセルにそのサブビューを再度追加します。これは、テキストがクリアされていないように見える理由です。複数のフィールドをセルの上に重ねて表示するためです。

cellForRowAtIndexPath memory management

+0

どうもありがとうニック:

は、私はより詳細な説明のために書いたこの他の答えをチェックしてください。それはかなり単純ですが、どういうわけか私はその点を逃しました。 –

関連する問題