Thursday, October 29, 2026
HomeiOS Developmentios - Methods to exclude UIViewControllers apart from views from Swizzle Methodology?

ios – Methods to exclude UIViewControllers apart from views from Swizzle Methodology?

[ad_1]

I’m attempting to override viewDidAppear() strategies of my customized ViewControllers and i discovered an answer utilizing swizzle technique. It really works however when keyboard is seen, my technique additionally gathers Keyboard UIViewControllers like;

    UIInputWindowController
    UICompatibilityInputViewController
    UISystemKeyboardDockController
    UIInputWindowController
    UICompatibilityInputViewController
    UICompatibilityInputViewController
    UISystemInputAssistantViewController
    UIPredictionViewController
    UISystemKeyboardDockController

I’m wondering how am i able to exclude all UIViewControllers apart from my customized ViewControllers? I can exclude these UIViewControllers that i encounter to this point however i believe there shall be UIViewControllers apart from these sooner or later. I feel i would like a generic answer.

My code is as under:

extension UIViewController {
    @objc func viewDidApperOverride(_ animated: Bool) {
        self.viewDidApperOverride(animated)
        print(NSStringFromClass(sort(of: self)))  
    }

    static func swizzle() {
        if self != UIViewController.self {
            return
        }
        
        let originalSelector = #selector(UIViewController.viewDidAppear(_:))
        let swizzledSelector = #selector(UIViewController.viewDidApperOverride(_:))
        guard let originalMethod = class_getInstanceMethod(self, originalSelector),
        let swizzledMethod = class_getInstanceMethod(self, swizzledSelector) else { return }
        method_exchangeImplementations(originalMethod, swizzledMethod)
    }
}

[ad_2]

RELATED ARTICLES

LEAVE A REPLY

Please enter your comment!
Please enter your name here

Most Popular

Recent Comments