多页面数据关联,页面重新出现时都需要刷新,不需要刷新时也刷新,所以有很多无效请求。如果使用通知,通知是立即直接刷新,没有在页面出现时刷新,也有很多无效请求。如果当数据更改时,通知VC在出现时刷新,且只刷新一次,就好了。
专注为页面刷新设计。当页面被通知需要刷新时,页面出现时才刷新(只刷新一次),而不是通知一次刷新一次。可以给页面添加多个标签,当该标签需要刷新时,所有含有该标签的页面都可以刷新。
pod 'NexusRefresh', '2.0.4'
import NexusRefresh
// MARK: 刷新标签扩展
extension NexusRefreshManager.Tag {
/// 首页
static let Home = NexusRefreshManager.Tag("Home")
}
class HomeViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// 将自己加入可刷新池
NexusRefreshManager.shared.add(self, tags: [.Home]) {
print("HomeViewController 刷新了")
}
}
}
// 调用
NexusRefreshManager.shared.refresh(tags: [.Home])
/// 刷新方法详情
/// - Parameters:
/// - tags: 标签列表
/// - filtObjects: 过滤列表
/// - force: 强制刷新,会直接刷新,不会等待出现(仅对VC有用)
public func refresh(tags: Set<Tag>, filtObjects: [AnyObject] = [], force: Bool = false)
可以刷新除UIViewController
以外的对象么?
可以,但是他们会在立即刷新,而不是出现时刷新
什么时候刷新?
UIViewController
若不在顶层,出现时刷新,在顶层,立即刷新。
非UIViewController立即刷新。
同一个对象可以多次添加刷新通知吗? 不可以,会以最后一次添加为准
和NotificationCenter
异同
NotificationCenter
在一个对象中可以有多个观察者。
NexusRefreshManager
在一个对象中仅支持一个观察者。
NotificationCenter
观察一个NotificationName。
NexusRefreshManager
可以观察多个Tag。
NotificationCenter
发送通知观察者立刻收到。
NexusRefreshManager
如果不是强制刷新,未展示的UIViewController会在viewDidAppear时收到,且只会收到最后一次的通知。
NotificationCenter
可以接受数据,
NexusRefreshManager
也可以接受数据。
可以通过邮箱联系我: 664454335@qq.com
NexusRefresh is available under the MIT license. See the LICENSE file for more info.
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。