私は、いくつかのカスタムUITableCellを含むUITableを持っています。これらのセルには、いくつかのUILabelsとUITextFieldが含まれています。テーブルのデータソースは、メインコントローラのプロパティから取得されます。 (このコントローラーもデリゲートとテーブルのdataSourceです)。ここでセルの1つの内部でUITextFieldを編集するときに、UITableを即座にリロードします。
は、UIの単純化されたスクリーンショットです:今
、私は、ユーザーがUITextFieldsのいずれかを編集したときに「オンザフライ」のすべてのUILabelsの内容を更新する必要があります。 これを行うには、私はUITextFieldレベルで "Editing Changed"イベントを聞いています。これは、次のアクションをトリガー:のViewControllerで
- (IBAction) editChangeHandler: (id) sender {
MyAppDelegate *delegate = [[UIApplication sharedApplication] delegate];
[[delegate.viewController.myDataSourceArray objectAtIndex:self.rowIndex] setANumber: [theTextField.text intValue]];
[delegate.viewController reloadRows];
}
reloadRows方法は、次のような次のとおりです。ここでは
- (void) reloadRows {
NSLog(@"called reloadRows");
//perform some calculations on the data source objects here...
[theUITable reloadData];
}
私の問題は、ユーザーがフィールドに値を変更するたびに、reloadRowsメソッドが正常であるということです明らかにreloadDataが呼び出されますが、これもまたキーボードを破棄する原因となります。
最終的に、キーボードが閉じられてテーブルがリロードされる前に、TextFieldを編集するときにユーザーは1つのキーに触れることができます。
誰かがこれに対する解決策を知っているか、同じ問題を経験していますか?
Arf!ありがとうございました !キーボードの解任はセル状態の再設定によって実際に説明されました。どのように私はそれを見ていないだろうか?:-)私は現在の行のラベルも更新する必要があったので、2番目の提案に従って終了し、個々の行のラベルのみを更新するコントローラに新しいメソッドを書きました。 – Saze