本当に不可解なバグに遭遇しました。 UITableViewのfirst行が返されます 1 そしてその 二番目 一人が帰る indexPath!それはどうして可能ですか?
私の `-(void)viewDidLoad`では、すべてがまだ問題ありません。私は最初の行を正常にハイライトしています
currentRow = 0;
[tableView selectRowAtIndexPath:[NSIndexPath indexPathForRow:currentRow inSection:0]
animated:NO scrollPosition:UITableViewScrollPositionNone];
どの行が選択されているかを追跡するための変数currentRow
があります(現在選択されている行に応じて別のコントロールが変化します)。
今私の `didDeselectRowAtIndexPath`デリゲート関数で私は持っています:
-(void)tableView:(UITableView *)tableView didDeselectRowAtIndexPath:(NSIndexPath *)indexPath {
...
NSLog(@"IndexPath: %@", [indexPath description]);
}
ログには以下が表示されます。
IndexPath: <NSIndexPath 0x79509d0> 2 indexes [0, 0]
をタッチすると 二番目 行、およびIndexPath: <NSIndexPath 0x79509d0> 2 indexes [0, 1]
をタッチすると 最初 行。
行の挿入、削除、並べ替えなどはなく、スクロールもありません。これは、1つのセクションと3つの行を持つ単純なUITableView、グループ化されたスタイルです。何が原因でしょうか?
ご協力いただきありがとうございます、
S
実装しました didデselectRowAtIndexPath 。行が選択されなくなったときに発生します。
2行目にタッチすると、1行目が選択されなくなったため、[0、1]が表示されます。
最初の行をもう一度タッチすると、2番目の行が選択されなくなったため、[0、0]が表示されます。
これらは完全に期待されています。
実装 did選択するRowAtIndexPath 行が選択されたときに応答する必要がある場合。
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
// ^
...
NSLog(@"IndexPath: %@", [indexPath description]);
}
タイトルにもかかわらず、オーバーロードされたメソッドは実際にはdidDeselectRowAtIndexPath
であるため、動作は正しいようです。1行目がタッチされると、0行目が選択解除され、逆も同様です。