Repeat same statement in all viewDidLoad functions possible extension file










0















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 '18 at 2:05











  • @MadProgrammer could you show me a specific example of what you are talking about? Thanks.

    – user7459574
    Nov 11 '18 at 4:26











  • Inheritance in Swift

    – MadProgrammer
    Nov 11 '18 at 20:23















0















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 '18 at 2:05











  • @MadProgrammer could you show me a specific example of what you are talking about? Thanks.

    – user7459574
    Nov 11 '18 at 4:26











  • Inheritance in Swift

    – MadProgrammer
    Nov 11 '18 at 20:23













0












0








0








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 '18 at 4:21









rmaddy

240k27313377




240k27313377










asked Nov 11 '18 at 1:52







user7459574



















  • 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 '18 at 2:05











  • @MadProgrammer could you show me a specific example of what you are talking about? Thanks.

    – user7459574
    Nov 11 '18 at 4:26











  • Inheritance in Swift

    – MadProgrammer
    Nov 11 '18 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 '18 at 2:05











  • @MadProgrammer could you show me a specific example of what you are talking about? Thanks.

    – user7459574
    Nov 11 '18 at 4:26











  • Inheritance in Swift

    – MadProgrammer
    Nov 11 '18 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 '18 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 '18 at 2:05













@MadProgrammer could you show me a specific example of what you are talking about? Thanks.

– user7459574
Nov 11 '18 at 4:26





@MadProgrammer could you show me a specific example of what you are talking about? Thanks.

– user7459574
Nov 11 '18 at 4:26













Inheritance in Swift

– MadProgrammer
Nov 11 '18 at 20:23





Inheritance in Swift

– MadProgrammer
Nov 11 '18 at 20:23












2 Answers
2






active

oldest

votes


















0














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






























    0














    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',
      autoActivateHeartbeat: false,
      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









      0














      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



























        0














        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

























          0












          0








          0







          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 '18 at 7:25









          Tristan BurnsideTristan Burnside

          2,1661921




          2,1661921























              0














              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



























                0














                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

























                  0












                  0








                  0







                  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 '18 at 10:07









                  Eager LogicEager Logic

                  1,62411630




                  1,62411630



























                      draft saved

                      draft discarded
















































                      Thanks for contributing an answer to Stack Overflow!


                      • Please be sure to answer the question. Provide details and share your research!

                      But avoid


                      • Asking for help, clarification, or responding to other answers.

                      • Making statements based on opinion; back them up with references or personal experience.

                      To learn more, see our tips on writing great answers.




                      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

                      𛂒𛀶,𛀽𛀑𛂀𛃧𛂓𛀙𛃆𛃑𛃷𛂟𛁡𛀢𛀟𛁤𛂽𛁕𛁪𛂟𛂯,𛁞𛂧𛀴𛁄𛁠𛁼𛂿𛀤 𛂘,𛁺𛂾𛃭𛃭𛃵𛀺,𛂣𛃍𛂖𛃶 𛀸𛃀𛂖𛁶𛁏𛁚 𛂢𛂞 𛁰𛂆𛀔,𛁸𛀽𛁓𛃋𛂇𛃧𛀧𛃣𛂐𛃇,𛂂𛃻𛃲𛁬𛃞𛀧𛃃𛀅 𛂭𛁠𛁡𛃇𛀷𛃓𛁥,𛁙𛁘𛁞𛃸𛁸𛃣𛁜,𛂛,𛃿,𛁯𛂘𛂌𛃛𛁱𛃌𛂈𛂇 𛁊𛃲,𛀕𛃴𛀜 𛀶𛂆𛀶𛃟𛂉𛀣,𛂐𛁞𛁾 𛁷𛂑𛁳𛂯𛀬𛃅,𛃶𛁼

                      Edmonton

                      Crossroads (UK TV series)