에 ViewWillAppearObservable
클래스의 코드를 추가 할 수 있습니다, 당신은 서브 클래스 또는 지루하게 모든 UIViewController에 코드를 추가 할 필요가 없습니다 예. 대신 UIViewController의 viewDidAppear 메서드를 자신의 것으로 바꿔 넣으십시오. 당신이해야합니다
private let swizzling: (AnyClass, Selector, Selector) ->() = { forClass, originalSelector, swizzledSelector in
let originalMethod = class_getInstanceMethod(forClass, originalSelector)
let swizzledMethod = class_getInstanceMethod(forClass, swizzledSelector)
method_exchangeImplementations(originalMethod!, swizzledMethod!)
}
extension UIViewController {
static let classInit: Void = {
let originalSelector = #selector(viewDidAppear(_:))
let swizzledSelector = #selector(swizzledViewDidAppear(_:))
swizzling(UIViewController.self, originalSelector, swizzledSelector)
}()
@objc func swizzledViewDidAppear(_ animated: Bool) {
print("Add your logging logic here")
// Call the original viewDidAppear - using the swizzledViewDidAppear signature
swizzledViewDidAppear(animated)
}
}
참고 @efremidze하는 스위프트 4.
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
override init() {
super.init()
UIViewController.classInit
}
원래 크레딧을 AppDelegate에의 init을 재정 의하여 스위 즐을-킥오프와 @TikhonovAlexander
하기