暫無描述

NavigationControllerProxy.swift 2.0KB

    // // NavigationControllerProxy.swift // PaiaiUIKit // // Created by ffib on 2019/1/16. // Copyright © 2019 yb. All rights reserved. // import Foundation class NavigationControllerProxy: NSObject, UINavigationControllerDelegate { weak var delegate: NavigationControllerDelegate? init(target: NavigationControllerDelegate) { delegate = target } func navigationController(_ navigationController: UINavigationController, willShow viewController: UIViewController, animated: Bool) { delegate?.navigationController(navigationController, willShow: viewController, animated: true) } func navigationController(_ navigationController: UINavigationController, didShow viewController: UIViewController, animated: Bool) { delegate?.navigationController(navigationController, didShow: viewController, animated: true) } func navigationController(_ navigationController: UINavigationController, animationControllerFor operation: UINavigationController.Operation, from fromVC: UIViewController, to toVC: UIViewController) -> UIViewControllerAnimatedTransitioning? { return delegate?.navigationController(navigationController, animationControllerFor: operation, from: fromVC, to: toVC) } } extension UINavigationController { private struct AssociatedKeys { static var proxyKey = "NavigationControllerProxyKey" } private var proxy: NavigationControllerProxy? { get { return objc_getAssociatedObject(self, &AssociatedKeys.proxyKey) as? NavigationControllerProxy } set { objc_setAssociatedObject(self, &AssociatedKeys.proxyKey, newValue, objc_AssociationPolicy.OBJC_ASSOCIATION_RETAIN_NONATOMIC) } } func setDelegate<T: NavigationControllerDelegate>(_ target: T) { proxy = NavigationControllerProxy(target: target) delegate = proxy } }