【问题标题】:UISegmented control being reloaded on UITableView在 UITableView 上重新加载 UISegmented 控件
【发布时间】:2012-04-26 02:46:16
【问题描述】:

我有一个动态 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 )。

提前致谢!

【问题讨论】:

    标签: uitableview ios5 uisegmentedcontrol


    【解决方案1】:

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

    【讨论】:

    • 是的,就是这样。非常感谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-26
    • 1970-01-01
    • 2012-04-28
    • 2014-08-06
    • 2011-03-29
    相关资源
    最近更新 更多