1

の更新に問題がありUITableViewます。reloadDataその上でメソッドを呼び出しますが、cellForRowAtIndexPath呼び出されません。コード:

//.h
@interface MasterViewController : UIViewController<ELCTextFieldDelegate, UITableViewDelegate, UITableViewDataSource> {
  //some variables
}
@property (nonatomic, retain) IBOutlet UITableView *theTableView;
//other properties

//.m
- (void)viewDidLoad {
  //some code
  [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillShow:) name:UIKeyboardWillShowNotification object:nil];
  [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillHide:) name:UIKeyboardWillHideNotification object:nil];
}

- (void)keyboardWillHide:(NSNotification *)notification {
  self.theTableView.frame = CGRectMake(0, 0, 320, 480 - 64);
  [self.theTableView reloadData];
}

をxib で接続し、theTableViewとをに設定しました。UITableViewdelegatedataSourceFile's Owner

私は aと aをELCTextFieldCell提供するを使用します。セルにいくつかの値を挿入し、キーボードが非表示になると、tableView がデータをリロードして、セルの 1 つに正しい結果を表示する必要があります。私はいくつかのデバッグを行い、計算は正常に機能しましたが、そのセルは更新されません (前述したように、メソッドは の後に呼び出されません。UITableViewCellUILabelUITextFieldcellForRowAtIndexPath[self.theTableView reloadData]

ありがとうございました。

どんな助けでもいただければ幸いです

編集

そのための「醜い」解決策を見つけました。呼び出す代わりに

[self.theTableView reloadData];

私は呼びました

[self.theTableView reloadRowsAtIndexPaths:[NSArray arrayWithObject:[NSIndexPath indexPathForRow:7 inSection:0]] withRowAnimation:UITableViewRowAnimationNone];

醜くハードコーディングされているため、後でセルを追加したり一部を削除したりすると問題が発生する可能性がありますが、機能します。

reloadDataメソッドを使用するソリューションをまだ探しています

4

3 に答える 3

6

reloadData表示されている行のみを再表示します (効率のため)。直前にテーブルビューのフレームを設定したという事実はreloadData、何らかの理由でテーブルビューが特定のセルがその時点で表示されていることを認識していないため、新しいセルを要求しないと私に思わせます(これは、スクロール後に理由を説明します)ダウン/アップは正しく更新されます)。reloadData( )を呼び出す前に、テーブルビューをポーリングして、どのレポートが可視セルとして表示されるかを確認してください[theTableView visibleCells];。これが問題の追跡に役立つことを願っています。

于 2012-06-19T07:43:37.747 に答える
1

テーブルに変更がある場合にのみ、テーブルがリロードされます.....

于 2012-06-19T07:30:55.540 に答える
0

nilでないかどうかを確認してくださいtableView...nilの場合はメモリを割り当ててください

何が戻ってきているのか

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView 

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 

両方とも、呼び出されるはずの値よりもゼロ以外の値を返します

于 2012-06-19T06:51:21.923 に答える