我正在使用UITableView
做一个小型应用程序我的TableView
中有2个部分。在我的第一部分的最后一行中,有一个UISegmentControl
,一个段意味着删除第2部分而另一个部分什么都不做。在viewDidLoad
方法中,细分可以选择"什么都不做",当我点击"删除"分割。第2部分被删除了,我的问题是,当我删除第2部分时,我可以保持表格,我搜索了很多关于这个问题的内容,我花了很多时间在这上面。但仍然找不到实现这种效果的解决方案。我的代码如下:
CGPoint offset1 = [self.tableView contentOffset];
NSIndexSet *indexSet = [NSIndexSet indexSetWithIndex:1];
_deleteSec = YES;
[self.tableView deleteSections:indexSet withRowAnimation:UITableViewRowAnimationAutomatic];
[self.tableView setContentOffset:offset1 animated:NO];
应用程序启动后,我的第一个操作是手动向上滚动TableView
。然后我点击删除段,上面的代码被执行,第2部分被删除,但TableView
被滚动到初始位置,即应用程序刚刚开始并且TableView
首次显示。我搜索了互联网,我找到了一些我认为可以解决我的问题的代码。所以我在下面添加了它们:
[self.tableView deleteSections:indexSet withRowAnimation:UITableViewRowAnimationAutomatic];
[self.tableView reloadData];
[self.tableView layoutIfNeeded];
[self.tableView setContentOffset:offset1 animated:NO];
这次,当我第一次点击删除段时,它可以保持静止并删除第2部分,但是当我点击其他段或其他任何地方时,段操作方法没有被执行,tableview也只是滚动到初始位置本身,这似乎与我有关。有人能解释一下这个现象吗?如何解决这个问题?非常感谢,如果你能帮助我澄清我的疑问。
答案 0 :(得分:1)
这一行就在这里:
{{1}}
尝试删除它。
你告诉桌子要动画,所以它会。如果您只是告诉它重新加载数据,它将不会生成动画,但表格中的内容将会更新。