Suj*_*jal 6 uitabbarcontroller uinavigationcontroller tableview uirefreshcontrol swift
我的viewcontroller有一个tableview,我可以在不同的部分填充我的视图.我正在尝试向此tableview添加刷新控件.我实施的内容如下.
func setUpRefreshControl() {
let refreshControl = UIRefreshControl()
refreshControl.tintColor = UIColor.red
refreshControl.addTarget(self, action: #selector(handleRefresh(_: )), for: UIControlEvents.valueChanged)
if #available(iOS 10.0, *) {
tableView.refreshControl = refreshControl
} else {
tableView.addSubview(refreshControl)
}
}
@objc func handleRefresh(_ sender: UIRefreshControl) {
print("-----------REFRESHED------------")
}
Run Code Online (Sandbox Code Playgroud)
接下来,当我下拉tableview进行刷新时,刷新控件(设置为红色)可见.但是,不调用目标函数.
我的viewcontroller位于标签栏控制器内,该控制器嵌入在导航控制器中.我想这个问题与视图层次结构有关,因为当我在没有导航栏和标签栏的单独项目中尝试相同的代码时,它的工作正常.但我无法弄清楚当前的问题是什么.解决这个问题的任何建议?谢谢.
编辑:我在不同的模拟器中测试它:6,6s,6s +,7,7 +,8,8 +,X.我发现上面的代码在包括X在内的所有加号版本中运行良好.但是,所有模拟器都在运行ios 11.2所以我仍然无法弄清楚可能导致这个问题的原因.
小智 7
我遇到了类似的问题,拉动刷新在 5.5" 屏幕上可以正常工作,但所有其他手机只会显示部分动画,然后永远不会完全触发刷新。
我发现refreshControl.didMoveToSuperview()在viewDidAppear我的视图控制器中调用解决了这个问题。
如果我理解正确,则在设置时会调用相同的方法,tableView.refreshControl = refreshControl但需要在实际设置视图时重新计算。我需要再深入了解一下以确保具体细节,但希望这对暂时有所帮助。
这是我在 3 天前实现的刷新控制代码,它在我当前的项目中为我工作。
var refreshControl: UIRefreshControl!
这是我的全局refreshControl变量,下面是它的实现。
//MARK: - REFRESH CONTROLLER VIEW
refreshControl = UIRefreshControl()
refreshControl.attributedTitle = NSAttributedString(string: "Pull to refresh")
refreshControl.addTarget(self, action: #selector(refresh(_ :)), for: UIControlEvents.valueChanged)
refreshControl.attributedTitle = NSAttributedString(string: "")
tblRequest.addSubview(refreshControl)
Run Code Online (Sandbox Code Playgroud)
希望,这对你有用!:-)
| 归档时间: |
|
| 查看次数: |
1224 次 |
| 最近记录: |