gpt4 book ai didi

ios - 如何在 View 上继续动画刷新控件已更改

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

我在选项卡栏 Controller 内的 View “A”中有一个表。当我向下滚动以重新加载表格刷新控件时开始动画。当按标签栏 Controller 进入 View “B”然后返回查看“A”时,刷新控件可见但没有动画。

有人可以帮助我吗?谢谢

func refresh(sender:AnyObject)
{
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), { () -> Void in

Call API for data
dispatch_async(dispatch_get_main_queue(), { () -> Void in

UPDATE UI
refreshControl.endRefreshing()

})
});
}

override func viewDidAppear(animated: Bool)
{
if(requestTerminated == false)
{
//Continue animate refresh control somehow
}
}

最佳答案

假设您在 Controller A 中遇到这种情况,例如在 viewDidLoad 中:

//global var
var refreshControl:UIRefreshControl!

self.refreshControl = UIRefreshControl()
self.refreshControl.attributedTitle = NSAttributedString(string: "pull to refresh")
self.refreshControl.addTarget(self, action: #selector(MyTableViewController.pullToRefresh(_:)), forControlEvents: UIControlEvents.ValueChanged)
self.tableView.addSubview(refreshControl)

如您所见,您已将 refreshControl 作为 subview 添加到 A 表 Controller 。当您转到另一个 Controller 时,您可能会显示另一个 Controller (B),当您返回 A 时,您的刷新被卡住或卡住。

您可以在 viewWillAppear 上启动 UIRefreshControl 动画并在 viewDidDisappear 上结束它。在转换期间保存刷新过程的状态以了解何时显示 UIRefreshControl

您可以像这样使用 bool 值:

// Refresh state
var isRefreshing = false

// Call on viewWillApper
func superviewWillApper(){
if isRefreshing && !refreshControl.refreshing{
startRefreshAnimation()
}
}

// Call on viewDidDisapper
func superviewDidDisappear(){
endRefreshAnimation(false, dataFetched: !isRefreshing)
}

func startRefreshAnimation(){
refreshControl.beginRefreshing()
contentOffset = CGPointMake(0, -refreshControl.bounds.size.height)

isRefreshing = true
}

//Saves state of refresh
func endRefreshAnimation(wasEmpty: Bool, dataFetched: Bool){
refreshControl.endRefreshing()
isRefreshing = !dataFetched
if !wasEmpty{
setContentOffset(CGPointZero, animated: true)
}else{
setContentOffset(CGPointZero, animated: false)
}
}

关于ios - 如何在 View 上继续动画刷新控件已更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38126051/

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