2011-12-29 21 views
0

私はしばらくこの問題に苦しんでいましたので、最終的に私が間違っていることを確認することを決めました。編集せずにUITableviewにカスタムセルを追加する

セルのコンテンツビューでサブビューとしてUITextFieldを持つカスタムUITableViewCellを作成しました。私が達成しようとしているのは、textViewが編集を開始したときに標準のプレースホルダで新しい行を挿入することです。私はこれが下の方法で可能であると仮定しましたが、私はいつもクラッシュします。これを行う方法はありますか?

私はiOSを初めて使用しています。

- (void)textFieldDidBeginEditing:(UITextField *)textField 
    { 
     UITableView *tableView = (UITableView*)self.view; 

     if ([textField tag] == 2) { // Only add row if textfield 2 is editing 

      [tableView beginUpdates]; 
      [tableView insertRowsAtIndexPaths:[NSArray arrayWithObject:[tableView indexPathForSelectedRow]] withRowAnimation:UITableViewRowAnimationTop]; 
     [tableView endUpdates]; 
     } 
    [textField setFont:[UIFont systemFontOfSize:18.0]]; 
    [textField setTextColor:[UIColor blueColor]]; 
    } 

誰かがポインタや参考文献(リンゴのドキュメントを除いて)を持っている場合、それは感謝します。

+0

のみ、このアプリケーション、またはすべてのアプリケーションでoccuringこの問題です。私が意味することは、UITextfeildで値を入力することです。それがクラッシュするかどうかを確認してください。 –

+0

私はこれを理解しています。セルを押すと、テキストビューが編集を開始し、投稿したメソッドが呼び出されます。私は間違ってインデックスを作成しているので、自分自身の責任であるとは確信していますが、修正方法はわかりません。 –

+0

シミュレータまたはデバイスで問題が発生していますか。一度チェックしてください。 –

答えて

0

挿入する前にtableViewのソースであるコレクションを更新していません。

[tableView insertRowsAtIndexPaths:[NSArray arrayWithObject:[tableView indexPathForSelectedRow]] withRowAnimation:UITableViewRowAnimationTop]; 

これは、すぐにデータソースを照会し、委任します。今度は "プレースホルダー"を挿入したいかもしれませんが、配列や辞書はデータを正しく返すために必要なものを保持していますか?新しい行を挿入しようとしていて、ソースが正しく更新されない場合は、クラッシュします。したがって、修正するには、tableViewのアップデートを開始する前にソースを修正する必要があります。

私はあなたがリンゴの文書を望んでいないと知っていますが、これを見て、あなたの問題を解決するかもしれません。

http://developer.apple.com/library/ios/#documentation/UserExperience/Conceptual/TableView_iPhone/ManageInsertDeleteRow/ManageInsertDeleteRow.html#//apple_ref/doc/uid/TP40007451-CH10-SW9

+0

この文書は私がどこから得たかのところです。しかし、問題は、テキストフィールドのdidbeginメソッドからこれを呼び出せるかどうかはまだ分かりません。 –

+0

@AndresBucci申し訳ありませんが、何を呼びますか?あなたのtableviewのソースは何ですか? – MadhavanRP

+0

私はあなたが私はあなたがこの新しいセルで配列を作成して、行を挿入する必要があることを理解しているので、デフォルトのパラメータでカスタムUITableCellを挿入したいですか? –

関連する問題