在UITableView上重新加载UISegmentedcontrol

时间:2012-04-24 21:18:50

标签: uitableview ios5 uisegmentedcontrol

我有一个动态的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 ...,但是没有用(我确实把开头/结尾了。)

提前致谢!

1 个答案:

答案 0 :(得分:0)

重新加载表格时,“重复使用”单元格。因此每个单元格都不会存储状态,而是依赖另一个类(委托)来保存状态。因此,如果您希望在分段控件上保持状态,则将其值存储在表视图的委托中,然后确保每次为其索引路径将该值设置为cellForRowAtIndexPath中的分段控件。