TableViewの更新に関してトリッキーな問題が発生しました。更新のさまざまな方法を使用すると、さまざまな結果が得られます。説明させてください。
状況1:[tbl reloadData];
TableViewを更新するために、ここtbl
でTableView
を使用します-意図したとおりに機能します。
状況2: 使用する:
[tbl beginUpdates];
[tbl reloadRowsAtIndexPaths:indexPaths withRowAnimation:UITableViewRowAnimationRight];
[tbl endUpdates];
tbl
TableViewはどこにあり、TableViewにindexPaths
存在するすべてのindexPathを含む配列です。これで配列は正常になり、すべての正しいindexPath(ダブルおよびトリプルチェック)が含まれていますが、何らかの理由で-これは意図したとおりに機能しません。
これがXY問題であることに気付きました(Yを求めますが、Yを解くとXが解けると思うので、私の問題は本当にXです)。それは、Xの説明が少し複雑だと感じたからです(上記の問題の結果)。簡単な方法なので、できればそれは控えたいと思います。
それで、私の質問に移ります: TableViewを更新する2つの方法の間に違いはありますか(もちろんアニメーションビットは別として)、または問題が他の場所にあるのではないかと疑う必要がありますか?
編集: さて、私は症状が何であるかを説明しようとします:
-メソッドでは、次のように、セルのcellForRowAtIndexPath
indexPath行と等しいタグが割り当てられたボタンを各セルに追加します。
btn.tag = indexPath.row;
これを行う理由は、すべてのボタンが同じ関数を呼び出すため、各ボタンを識別できるようにするためです。
- (void)btnPressed:(id)sender
次にセルを更新すると(セルの一部の値が変更されたため)、状況1ですべてが正常に機能しますが、状況2ではタグが混同されるため、次にボタンの1つを押すと、正しいタグがなくなります。
取り違えは私にはランダムに見えますが、ランダム化は、最初に押すセルボタンによって異なります。これで私の問題が明らかになることを願っています。