gpt4 book ai didi

ios - refreshControl 扩展在 imagePicker 之后不显示微调器

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

我写了一个扩展,允许我在 UIViewController 中的常规 tableView 上显示 refreshControl。下面的代码在 viewDidLoad() 和拉动刷新时完美运行。

扩展名:

extension UITableView
{
func findRefreshControl () -> UIRefreshControl?
{
for view in subviews
{
if view is UIRefreshControl
{
print("The refresh control: \(view)")
return view as? UIRefreshControl
}
}
return nil
}

func addRefreshControlWith(sender: UIViewController, action: Selector, view: UIView)
{
guard findRefreshControl() == nil else { return }

let refreshControl = UIRefreshControl()
refreshControl.addTarget(sender, action: action, for: UIControlEvents.valueChanged)

view.addSubview(refreshControl)
}

func showRefreshControlWith(attributedTitle: String? = nil)
{
findRefreshControl()?.attributedTitle = NSAttributedString(string: attributedTitle!)
findRefreshControl()?.beginRefreshing()
}

func hideRefreshControl ()
{
findRefreshControl()?.endRefreshing()
}
}

ViewController 中的被调用者:(由观察事件触发)

private func showLoader()
{
tableView.showRefreshControlWith(attributedTitle: "Loading Profile".localized())
}

private func hideLoader()
{
tableView.hideRefreshControl()
}

观察者:

_ = presenter.profilePictureUploadingPending.skip(first: 1).observeNext { _ in self.showLoader() }
_ = presenter.profilePictureUploaded.skip(first: 1).observeNext { _ in self.hideLoader() }

但是,当我进入 UIImagePicker 在我的应用程序中上传照片并返回到 viewController 时,它应该再次触发旋转过程,直到照片成功上传。

我调试了我的代码,它正在启动方法,但是微调器从 View 层次结构 subview 中消失并且没有显示...

我不确定如何解决这个问题,但我非常感谢你们的帮助!

谢谢,凯文。

最佳答案

通过以下解决方案解决:

private func showLoader()
{
DispatchQueue.global(qos: .default).async {
DispatchQueue.main.async {
self.tableView.contentOffset.x = 1
self.tableView.contentOffset.y = -81
self.tableView.showRefreshControlWith(attributedTitle: "LOADING_PROFILE".localized())
}
}
}

关于ios - refreshControl 扩展在 imagePicker 之后不显示微调器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43381619/

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