Если вы готовы злоупотреблять средой выполнения Objective C, которую UIViewController все еще использует, вы можете использовать метод swizzling, чтобы выполнить то, что вы просите.https://medium.com/@abhimuralidharan/method-swizzling-in-ios-swift-1f38edaf984f
let aClass: AnyClass! = object_getClass(instance)
let originalMethod = class_getInstanceMethod(aClass, #selector(viewDidLoad))
let swizzledMethod = class_getInstanceMethod(aClass, #selector(newViewDidLoad))
if let originalMethod = originalMethod, let swizzledMethod = swizzledMethod {
method_exchangeImplementations(originalMethod, swizzledMethod)
}
но я бы не советовал.Вы торгуете между открываемостью и повторением.В случае, когда вы управляете всем кодом, будет проще поддерживать использование решения, такого как создание подклассов, которое все еще потребует некоторых изменений в каждом контроллере представления.