Why can't I call reloadData AND deselectRowAtIndexPath in viewWillAppear:animated at the same time?

不想你离开。 提交于 2019-12-03 10:04:17

When you reload a cell, it automatically gets deselected. That's because you don't set a cell's selected property to YES in tableView:cellForRowAtIndexPath:. So you will have to deal with this differently. Either identify that the cell at indexPath needs to be selected and appropriately set its selected property to YES in tableView:cellForRowAtIndexPath: or select it after you reload the data. In such case, you can execute the following methods –

[self.tableView reloadRowsAtIndexPaths:[NSArray arrayWithObject:indexPath]
                      withRowAnimation:UITableViewRowAnimationNone];

[self.tableView selectRowAtIndexPath:indexPath 
                            animated:NO
                      scrollPosition:UITableViewScrollPositionNone];

[self.tableView deselectRowAtIndexPath:indexPath animated:YES];

The order of steps are :-

  1. Reload the row without any animation.
  2. Select the row without animation.
  3. Deselect the row with animation.

This way I think you can get the effect you want.

When the user taps the row the first time to load the editable view controller deselect the UITableViewCell before loading the editable ViewController.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!