私のアプリでは、すべてのセルの内部にとUITextField
があります。しかし、私は以前/次のボタンを前/次のテキストフィールドを最初のレスポンダにするために前/次のボタンを実装するのに苦労しています。UITableViewのPrev./Nextボタンを実装して、最初のレスポンダを非表示セルのUITextFieldにする
私は、prev./nextボタンが押されたときに特定のメソッドを呼び出すようにUITableViewCell
クラスをサブクラス化し、セル自体をこのメソッドのパラメータとして渡します(したがって、インデックスパスを取得できますデリゲートのメソッドの実装では、テキストフィールドファーストレスポンダにする必要がある)
セルのインデックスパスである計算には、I:
- は、ボタンが押されたセルのインデックスパスを取得します
- インデックスpaに1を加算または減算するそのセルの目(押された応じたボタン)
問題テキストフィールド最初のレスポンダを作る、そのテキストフィールドテーブルビュー
-cellForRowAtIndexPath:
方法を用いて第1の応答を行わなければならないセルを得ます-cellForRowAtIndexPath:
メソッドは、可視である場合にのみセルを返します。したがって、セルが表示されていないときは、nil
が返され、上記のアルゴリズムは動作しませんが、セルが画面上にあるときは正しく動作します。 これは私の前のコードです。
- (void)prevButtonPressedInCell:(MUInfoMateriaTableViewCell *)cell
{
NSIndexPath *indexPath = [self.tableView indexPathForCell:cell];
NSIndexPath *previousIndexPath = [NSIndexPath indexPathForRow:indexPath.row-1 inSection:indexPath.section];
MUInfoMateriaTableViewCell *newCell = (MUInfoMateriaTableViewCell *)[self.tableView cellForRowAtIndexPath:previousIndexPath];
[newCell.textField becomeFirstResponder];
}
は、私はそのテキストを作ることができるように表示されていないセルを「取得」する方法はあります:ボタンは、MUInfoMateriaTableViewCell
はUITableViewCell
の私のサブクラスであり、それはそのテキストフィールドを返すtextField
性質を持っていることをことを提供しました最初のレスポンダーを入力しますか?または、この問題を回避する別のアルゴリズムを教えてください。
テキストフィールドが最初のレスポンダーになるセルを追跡するにはどうすればよいですか? 'activeCellIndexPath'のような名前のivarを用意し、アクティブなセルのインデックスパスが' tableView:willDisplayCell:forRowAtIndexPath: 'でパラメータとして渡されたセルのインデックスパスと一致するかどうかをチェックするか、より効率的ですアプローチ? – BigLex
ちょうどそれを記述した方法を正確に実装します。セルをレスポンダにしたくない場合や、 'activeCellIndexPath'を' nil'しない場合は、必ず処理してください。 – jszumski
ありがとうございます! – BigLex