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







                      這個網誌中的熱門文章

                      How to read a connectionString WITH PROVIDER in .NET Core?

                      Node.js Script on GitHub Pages or Amazon S3

                      Museum of Modern and Contemporary Art of Trento and Rovereto