美文网首页代码片段
iOS跨页面按需刷新

iOS跨页面按需刷新

作者: 霸哥终结者 | 来源:发表于2021-12-03 14:16 被阅读0次

    背景

    多页面数据关联,页面重新出现时都需要刷新,不需要刷新时也刷新,所以有很多无效请求。如果使用通知,通知是立即直接刷新,没有在页面出现时刷新,也有很多无效请求。如果当数据更改时,通知VC在出现时刷新,且只刷新一次,就好了。

    NexusRefresh介绍

    专注为页面刷新设计。当页面被通知需要刷新时,页面出现时才刷新(只刷新一次),而不是通知一次刷新一次。可以给页面添加多个标签,当该标签需要刷新时,所有含有该标签的页面都可以刷新。

    安装

    pod 'NexusRefresh', '2.0.4'
    

    使用

    1. 定义刷新标签
    import NexusRefresh
    
    // MARK: 刷新标签扩展
    extension NexusRefreshManager.Tag {
      /// 首页
      static let Home = NexusRefreshManager.Tag("Home")
       
    }
    
    1. 监听刷新
    class HomeViewController: UIViewController {
      override func viewDidLoad() {
        super.viewDidLoad()
        // 将自己加入可刷新池
        NexusRefreshManager.shared.add(self, tags: [.Home]) { object in
            // "tags: \(object.tags), data: \(object.data)"
            print("HomeViewController 刷新了")
        }
      }
    }
    
    1. 通知刷新
    // 调用
    NexusRefreshManager.shared.refresh(tags: [.Home])
    
    /// 刷新方法详情
    /// - Parameters:
    ///  - tags: 标签列表
    ///  - data: 传递数据
    ///  - filtObjects: 过滤列表
    ///  - force: 强制刷新,会直接刷新,不会等待出现(仅对VC有用)
    public func refresh(tags: Set<Tag>, data: Any? = nil, filtObjects: [AnyObject] = [], force: Bool = false)
    

    Q&A

    1. 可以刷新除UIViewController以外的对象么?
      可以,但是他们会在立即刷新,而不是出现时刷新

    2. 什么时候刷新?
      UIViewController若不在顶层,出现时刷新,在顶层,立即刷新。
      非UIViewController立即刷新。

    3. 同一个对象可以多次添加刷新通知吗?
      不可以,会以最后一次添加为准

    4. NotificationCenter异同

    • NotificationCenter在一个对象中可以有多个观察者。
      NexusRefreshManager在一个对象中仅支持一个观察者。

    • NotificationCenter观察一个NotificationName。
      NexusRefreshManager可以观察多个Tag。

    • NotificationCenter发送通知观察者立刻收到。
      NexusRefreshManager如果不是强制刷新,未展示的UIViewController会在viewDidAppear时收到,且只会收到最后一次的通知。

    • NotificationCenter可以接受数据,
      NexusRefreshManager也可以接受数据。

    Author

    可以通过邮箱联系我: 664454335@qq.com

    最后附上地址

    github地址: https://github.com/LuckyPia/NexusRefresh
    码云地址: https://gitee.com/luckypia/NexusRefresh

    相关文章

      网友评论

        本文标题:iOS跨页面按需刷新

        本文链接:https://www.haomeiwen.com/subject/hvnpxrtx.html