0

動的な UITableView があります。最初のセクションの最初の行には、segmentedControll があります (すべてプロトタイプ セル、サブクラス化および UITableViewController への委譲)。このセグメント化されたコントロールを使用して、まったく同じセクションに追加の行を表示したいと考えています。私がしているのは、条件付きでnumberOfRowsInSection、SegmentedControl がタップされると、次のようになります。

  if (cellPath.section==0 && cellPath.row==1) {

        if (segmentedCell.segmentControl.selectedSegmentIndex==0) {

            reverse=NO;

           [self.tableView reloadSections:[NSIndexSet indexSetWithIndex:0] withRowAnimation:UITableViewRowAnimationAutomatic];

        }else if (segmentedCell.segmentControl.selectedSegmentIndex==1){

            reverse=YES;

            [self.tableView reloadSections:[NSIndexSet indexSetWithIndex:0] withRowAnimation:UITableViewRowAnimationAutomatic];

 }

}

何とか機能しますが、問題は、SegmentedControl も初期状態でリロードされ、残りを想像できることです。

これを回避する方法について何か考えはありますか? reloadRowsAtIndex ... も試しましたが、機能しません ( begin/end を入れました)。

前もって感謝します!

4

1 に答える 1

0

テーブルをリロードすると、セルは「再利用」されます。したがって、各セルは状態を格納しませんが、状態を保持するために別のクラス(委任)に依存します。したがって、セグメント化されたコントロールの状態を維持する場合は、その値をテーブルビューのデリゲートに格納し、その値を、インデックスパスに対して毎回cellForRowAtIndexPathのセグメント化されたコントロールに設定するようにします。

于 2012-04-25T18:46:16.933 に答える