Повторите одно и то же утверждение во всех функциях возможного расширения файла viewDidLoad. - PullRequest
0 голосов
/ 11 ноября 2018

Я хочу, чтобы это же утверждение повторялось во всех функциях viewDidLoad моих проектов. Я знаю, что могу просто набрать его вручную, но я пытаюсь найти способ увеличить скорость кода. Я не знаю, смогу ли я использовать расширение файла в этом.

override func viewDidLoad() {
    super.viewDidLoad()

    let myswitchBoolValuefromFirstVc : Bool = UserDefaults.standard.bool(forKey: "mySwitch")// this is how you retrieve the bool value

    // to see the value, just print those with conditions. you can use those for your things.
    if myswitchBoolValuefromFirstVc == true {
        print("true")
        rosaryCounterLabel.isHidden = false
    }
    else {
        print("false")
        rosaryCounterLabel.isHidden = true
    }

Ответы [ 2 ]

0 голосов
/ 11 ноября 2018

Создание «основного» контроллера вида.

class MasterViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()


        //"Global" code here
    }

}

А затем наследовать во всех других ваших контроллерах представления

class ViewController: MasterViewController{

    override func viewDidLoad() {
        super.viewDidLoad()

        //controller specific code here
    }

}
0 голосов
/ 11 ноября 2018

Если вы готовы злоупотреблять средой выполнения 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)
}

но я бы не советовал.Вы торгуете между открываемостью и повторением.В случае, когда вы управляете всем кодом, будет проще поддерживать использование решения, такого как создание подклассов, которое все еще потребует некоторых изменений в каждом контроллере представления.

...