Mat*_*ler 2 cocoa-touch uitableview reloaddata
我有一个带有单元格的UITableView,可以在选中时将viewControllers推送到堆栈.子视图控制器接受用户输入,然后弹出堆栈.
当弹出子viewController时,我希望父tableView更新所选单元格的值,然后取消选择该行.我可以使用reloadData更新单元格,我可以使用deselectRowAtIndexPath取消选择该行 - 但我不能同时执行这两个操作.
我理解为什么这是 - reloadData隐式取消选择单元格,deselectRowAtIndexPath明确地取消选择它,但我发现很奇怪我找不到任何想要实现相同重载/取消选择行为的人.我在这里错过了什么?
所有代码都在viewWillAppear:animated中 - 如果我在viewWillAppear中放置deselectRowAtIndexPath并在viewDidAppear中放入reloadData,我可以接近,但这不是我想要的.
重新加载单元格时,会自动取消选择.那是因为你没有将单元格的selected属性设置YES为tableView:cellForRowAtIndexPath:.所以你必须以不同的方式处理这个问题.无论是确定在电池indexPath的需求是selected和适当的设置selected属性YES中tableView:cellForRowAtIndexPath:或选择它重新载入数据之后.在这种情况下,您可以执行以下方法 -
[self.tableView reloadRowsAtIndexPaths:[NSArray arrayWithObject:indexPath]
withRowAnimation:UITableViewRowAnimationNone];
[self.tableView selectRowAtIndexPath:indexPath
animated:NO
scrollPosition:UITableViewScrollPositionNone];
[self.tableView deselectRowAtIndexPath:indexPath animated:YES];
Run Code Online (Sandbox Code Playgroud)
步骤顺序如下: -
这样我觉得你可以得到你想要的效果.
| 归档时间: |
|
| 查看次数: |
1960 次 |
| 最近记录: |