Repeat same statement in all viewDidLoad functions possible extension file











up vote
0
down vote

favorite












I want this same statement repeated in all of my projects' viewDidLoad functions. I know I can just manually type it in but I am trying to find a way to increase my code speed. I don't know if I can use a extension file in this.



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
}









share|improve this question
























  • Extensions can't override existing functionality (or more to the point they shouldn't) - Instead, you would either need to provide an extension which contained a function with the code in it, that you'd need to call from viewDidLoad of all you view controllers you wanted to use it, but then you have an issue over instance variables, OR, you could create a custom class which extends from UIViewController and that all your own view controllers would inherit from
    – MadProgrammer
    Nov 11 at 2:05










  • @MadProgrammer could you show me a specific example of what you are talking about? Thanks.
    – Jason Stone
    Nov 11 at 4:26










  • Inheritance in Swift
    – MadProgrammer
    Nov 11 at 20:23















up vote
0
down vote

favorite












I want this same statement repeated in all of my projects' viewDidLoad functions. I know I can just manually type it in but I am trying to find a way to increase my code speed. I don't know if I can use a extension file in this.



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
}









share|improve this question
























  • Extensions can't override existing functionality (or more to the point they shouldn't) - Instead, you would either need to provide an extension which contained a function with the code in it, that you'd need to call from viewDidLoad of all you view controllers you wanted to use it, but then you have an issue over instance variables, OR, you could create a custom class which extends from UIViewController and that all your own view controllers would inherit from
    – MadProgrammer
    Nov 11 at 2:05










  • @MadProgrammer could you show me a specific example of what you are talking about? Thanks.
    – Jason Stone
    Nov 11 at 4:26










  • Inheritance in Swift
    – MadProgrammer
    Nov 11 at 20:23













up vote
0
down vote

favorite









up vote
0
down vote

favorite











I want this same statement repeated in all of my projects' viewDidLoad functions. I know I can just manually type it in but I am trying to find a way to increase my code speed. I don't know if I can use a extension file in this.



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
}









share|improve this question















I want this same statement repeated in all of my projects' viewDidLoad functions. I know I can just manually type it in but I am trying to find a way to increase my code speed. I don't know if I can use a extension file in this.



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
}






ios swift function loops extension-methods






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited Nov 11 at 4:21









rmaddy

235k27306373




235k27306373










asked Nov 11 at 1:52









Jason Stone

751312




751312












  • Extensions can't override existing functionality (or more to the point they shouldn't) - Instead, you would either need to provide an extension which contained a function with the code in it, that you'd need to call from viewDidLoad of all you view controllers you wanted to use it, but then you have an issue over instance variables, OR, you could create a custom class which extends from UIViewController and that all your own view controllers would inherit from
    – MadProgrammer
    Nov 11 at 2:05










  • @MadProgrammer could you show me a specific example of what you are talking about? Thanks.
    – Jason Stone
    Nov 11 at 4:26










  • Inheritance in Swift
    – MadProgrammer
    Nov 11 at 20:23


















  • Extensions can't override existing functionality (or more to the point they shouldn't) - Instead, you would either need to provide an extension which contained a function with the code in it, that you'd need to call from viewDidLoad of all you view controllers you wanted to use it, but then you have an issue over instance variables, OR, you could create a custom class which extends from UIViewController and that all your own view controllers would inherit from
    – MadProgrammer
    Nov 11 at 2:05










  • @MadProgrammer could you show me a specific example of what you are talking about? Thanks.
    – Jason Stone
    Nov 11 at 4:26










  • Inheritance in Swift
    – MadProgrammer
    Nov 11 at 20:23
















Extensions can't override existing functionality (or more to the point they shouldn't) - Instead, you would either need to provide an extension which contained a function with the code in it, that you'd need to call from viewDidLoad of all you view controllers you wanted to use it, but then you have an issue over instance variables, OR, you could create a custom class which extends from UIViewController and that all your own view controllers would inherit from
– MadProgrammer
Nov 11 at 2:05




Extensions can't override existing functionality (or more to the point they shouldn't) - Instead, you would either need to provide an extension which contained a function with the code in it, that you'd need to call from viewDidLoad of all you view controllers you wanted to use it, but then you have an issue over instance variables, OR, you could create a custom class which extends from UIViewController and that all your own view controllers would inherit from
– MadProgrammer
Nov 11 at 2:05












@MadProgrammer could you show me a specific example of what you are talking about? Thanks.
– Jason Stone
Nov 11 at 4:26




@MadProgrammer could you show me a specific example of what you are talking about? Thanks.
– Jason Stone
Nov 11 at 4:26












Inheritance in Swift
– MadProgrammer
Nov 11 at 20:23




Inheritance in Swift
– MadProgrammer
Nov 11 at 20:23












2 Answers
2






active

oldest

votes

















up vote
0
down vote













If you are prepared to abuse the Objective-C runtime that UIViewController still uses, you can use method swizzling to do what you ask. 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)
}


but I wouldn't recommend it. You trade between discoverability and repetition. In the case where you control all the code, it is going to be easier to maintain using a solution like subclassing that will still require some changes in every view controller.






share|improve this answer




























    up vote
    0
    down vote













    Create a "master" view controller.



    class MasterViewController: UIViewController {

    override func viewDidLoad() {
    super.viewDidLoad()


    //"Global" code here
    }

    }


    And then inherit in all your other view controllers



    class ViewController: MasterViewController{

    override func viewDidLoad() {
    super.viewDidLoad()

    //controller specific code here
    }

    }





    share|improve this answer





















      Your Answer






      StackExchange.ifUsing("editor", function () {
      StackExchange.using("externalEditor", function () {
      StackExchange.using("snippets", function () {
      StackExchange.snippets.init();
      });
      });
      }, "code-snippets");

      StackExchange.ready(function() {
      var channelOptions = {
      tags: "".split(" "),
      id: "1"
      };
      initTagRenderer("".split(" "), "".split(" "), channelOptions);

      StackExchange.using("externalEditor", function() {
      // Have to fire editor after snippets, if snippets enabled
      if (StackExchange.settings.snippets.snippetsEnabled) {
      StackExchange.using("snippets", function() {
      createEditor();
      });
      }
      else {
      createEditor();
      }
      });

      function createEditor() {
      StackExchange.prepareEditor({
      heartbeatType: 'answer',
      convertImagesToLinks: true,
      noModals: true,
      showLowRepImageUploadWarning: true,
      reputationToPostImages: 10,
      bindNavPrevention: true,
      postfix: "",
      imageUploader: {
      brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
      contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
      allowUrls: true
      },
      onDemand: true,
      discardSelector: ".discard-answer"
      ,immediatelyShowMarkdownHelp:true
      });


      }
      });














       

      draft saved


      draft discarded


















      StackExchange.ready(
      function () {
      StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53245175%2frepeat-same-statement-in-all-viewdidload-functions-possible-extension-file%23new-answer', 'question_page');
      }
      );

      Post as a guest















      Required, but never shown

























      2 Answers
      2






      active

      oldest

      votes








      2 Answers
      2






      active

      oldest

      votes









      active

      oldest

      votes






      active

      oldest

      votes








      up vote
      0
      down vote













      If you are prepared to abuse the Objective-C runtime that UIViewController still uses, you can use method swizzling to do what you ask. 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)
      }


      but I wouldn't recommend it. You trade between discoverability and repetition. In the case where you control all the code, it is going to be easier to maintain using a solution like subclassing that will still require some changes in every view controller.






      share|improve this answer

























        up vote
        0
        down vote













        If you are prepared to abuse the Objective-C runtime that UIViewController still uses, you can use method swizzling to do what you ask. 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)
        }


        but I wouldn't recommend it. You trade between discoverability and repetition. In the case where you control all the code, it is going to be easier to maintain using a solution like subclassing that will still require some changes in every view controller.






        share|improve this answer























          up vote
          0
          down vote










          up vote
          0
          down vote









          If you are prepared to abuse the Objective-C runtime that UIViewController still uses, you can use method swizzling to do what you ask. 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)
          }


          but I wouldn't recommend it. You trade between discoverability and repetition. In the case where you control all the code, it is going to be easier to maintain using a solution like subclassing that will still require some changes in every view controller.






          share|improve this answer












          If you are prepared to abuse the Objective-C runtime that UIViewController still uses, you can use method swizzling to do what you ask. 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)
          }


          but I wouldn't recommend it. You trade between discoverability and repetition. In the case where you control all the code, it is going to be easier to maintain using a solution like subclassing that will still require some changes in every view controller.







          share|improve this answer












          share|improve this answer



          share|improve this answer










          answered Nov 11 at 7:25









          Tristan Burnside

          2,1561920




          2,1561920
























              up vote
              0
              down vote













              Create a "master" view controller.



              class MasterViewController: UIViewController {

              override func viewDidLoad() {
              super.viewDidLoad()


              //"Global" code here
              }

              }


              And then inherit in all your other view controllers



              class ViewController: MasterViewController{

              override func viewDidLoad() {
              super.viewDidLoad()

              //controller specific code here
              }

              }





              share|improve this answer

























                up vote
                0
                down vote













                Create a "master" view controller.



                class MasterViewController: UIViewController {

                override func viewDidLoad() {
                super.viewDidLoad()


                //"Global" code here
                }

                }


                And then inherit in all your other view controllers



                class ViewController: MasterViewController{

                override func viewDidLoad() {
                super.viewDidLoad()

                //controller specific code here
                }

                }





                share|improve this answer























                  up vote
                  0
                  down vote










                  up vote
                  0
                  down vote









                  Create a "master" view controller.



                  class MasterViewController: UIViewController {

                  override func viewDidLoad() {
                  super.viewDidLoad()


                  //"Global" code here
                  }

                  }


                  And then inherit in all your other view controllers



                  class ViewController: MasterViewController{

                  override func viewDidLoad() {
                  super.viewDidLoad()

                  //controller specific code here
                  }

                  }





                  share|improve this answer












                  Create a "master" view controller.



                  class MasterViewController: UIViewController {

                  override func viewDidLoad() {
                  super.viewDidLoad()


                  //"Global" code here
                  }

                  }


                  And then inherit in all your other view controllers



                  class ViewController: MasterViewController{

                  override func viewDidLoad() {
                  super.viewDidLoad()

                  //controller specific code here
                  }

                  }






                  share|improve this answer












                  share|improve this answer



                  share|improve this answer










                  answered Nov 11 at 10:07









                  Eager Logic

                  1,59411630




                  1,59411630






























                       

                      draft saved


                      draft discarded



















































                       


                      draft saved


                      draft discarded














                      StackExchange.ready(
                      function () {
                      StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53245175%2frepeat-same-statement-in-all-viewdidload-functions-possible-extension-file%23new-answer', 'question_page');
                      }
                      );

                      Post as a guest















                      Required, but never shown





















































                      Required, but never shown














                      Required, but never shown












                      Required, but never shown







                      Required, but never shown

































                      Required, but never shown














                      Required, but never shown












                      Required, but never shown







                      Required, but never shown







                      Popular posts from this blog

                      List item for chat from Array inside array React Native

                      Thiostrepton

                      Caerphilly