0

ビューに tableView があり、すべて正常に動作しますが、各カスタム セル (ToDoListCell) には、ユーザーが編集してデータを更新できるテキスト フィールドがあります。キーボードで非表示になるセルにスクロールしようとすると、問題が発生します。

注: Apple のドキュメントで推奨されているように、NSNotificationCenter オブザーバー メソッドを使用してテーブルのサイズを調整しましたが、これが問題ではないことはわかっています。

- (void)scrollToSelectedCell {

        NSIndexPath *currentIndexPath = [NSIndexPath indexPathForItem:0 inSection:0];
        while (currentIndexPath.row < self.todos.count) {
           ToDoListCell *cell = (ToDoListCell *)[self.table cellForRowAtIndexPath:currentIndexPath];
                if (cell.titleField.isEditing == YES) {
                      [self.table scrollToRowAtIndexPath:currentIndexPath atScrollPosition:UITableViewScrollPositionMiddle animated:YES];
                      break;
                }

           currentIndexPath = [NSIndexPath indexPathForItem:currentIndexPath.row + 1 inSection:0];

         }
}

現在画面に表示されていないセルにスクロールしない理由は何ですか?

ありがとう、

ベン

4

2 に答える 2

0

あくまで推測ですが、おそらく

ToDoListCell *cell = (ToDoListCell *)[self.table cellForRowAtIndexPath:currentIndexPath];

戻ってきnilcell.titleField.isEditing == YES、常に失敗します。したがって、スクロール コマンドは呼び出されません。テーブル ビューは表示可能なセルのみを保持するため、編集中のセルが表示されなくなるようにテーブル ビューのサイズを変更した場合は、元にnil戻る可能性があります。テーブルのサイズを変更する前に、編集中のセルのインデックス パスを決定する必要があります。

于 2013-08-11T01:01:13.433 に答える