我有一个UITableView
,在添加新项目的UIViewController
的委托上,插入行。该行被正确插入。
但是,在此之后拖动UIRefreshControl
时,UITableView上的UITableView
不会消失。
extension FeedViewController: AddPostDelegate {
func didAddPost(_ userPost: UserPost) {
self.postsWrapper?.posts.insert(PostWrapper(type: PostType.user(userPost)), at: 0)
self.tableView.beginUpdates()
self.tableView.insertRows(at: [
IndexPath(row: 1, section: 0)
], with: .automatic)
self.tableView.endUpdates()
self.refresher.endRefreshing()//Does nothing
}
}
在viewDidLoad
:
refresher = UIRefreshControl()
tableView.addSubview(refresher)
refresher.addTarget(self, action: #selector(didDragScrollView), for: .valueChanged)
refresher.layer.zPosition = -1//otherwise in front of the header cell when refreshing (iOS 9.2)
如果我没有先去另一个视图而不是在尝试拉动刷新之前再回来,它总是会永远停止旋转。
编辑:
看起来UIRefreshControl
在我添加帖子后不再调用目标函数。
有关为何可能发生这种情况的任何想法?如何解决?
答案 0 :(得分:1)
确保在用户撤消刷新之前未调用from project.app.models import model1,model2,...
。如果beginRefreshing()
为refreshControl.isRefreshing
,那么在“拉动刷新”时不会调用选择器。
一个简单的测试:
true
然后用户拉动刷新。由于let refreshControl = UIRefreshControl()
override func viewDidLoad() {
super.viewDidLoad()
refreshControl.addTarget(self, action: #selector(ViewController.refreshData), for: .valueChanged)
tableView.refreshControl = refreshControl
}
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
// sets refreshControl.isRefreshing to true
// before the user initiates it
refreshControl.beginRefreshing()
}
为refreshControl.isRefreshing
,因此不会调用选择器。如果您移除true
中的refreshControl.beginRefreshing()
,则会调用选择器:
viewDidAppear
答案 1 :(得分:0)
尝试将UIRefreshControl
分配到refreshControl
的{{1}}属性,如下所示:
UITableView
请注意,这需要iOS 10.0或更高版本,但我们很快就会获得iOS 12.0,因此我认为您不应该支持iOS低于10.0