gpt4 book ai didi

ios - UIRefreshControl 控件在插入新行后永远旋转

转载 作者:行者123 更新时间:2023-11-28 14:41:12 25 4
gpt4 key购买 nike

我有一个 UITableView,它在 UIViewController 的委托(delegate)上添加了一个新项目,插入了行。该行已正确插入。

但是,之后拖动 UITableView 时,UITableView 上的 UIRefreshControl 不会消失。

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)

如果我在尝试拉取刷新之前不先转到另一个 View 而不是返回,它总是永远挂起旋转。

编辑:在我添加帖子后,UIRefreshControl 似乎不再调用目标函数。

关于为什么会发生这种情况的任何想法?如何解决?

最佳答案

确保在用户拉动刷新之前未调用 beginRefreshing()。如果 refreshControl.isRefreshingtrue,则选择器不会在“拉动刷新”时被调用。

一个简单的测试:

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.isRefreshingtrue 选择器不会被调用。如果您在 viewDidAppear 中删除 refreshControl.beginRefreshing(),将调用选择器:

@objc func refreshData() {
print("refresh initiated")
refreshControl.endRefreshing()
}

关于ios - UIRefreshControl 控件在插入新行后永远旋转,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50516533/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com