Search code examples
iosiphoneswiftxib

Swift segue to xib file programmatically


I need to load a xib file from a navigation bar button item. I have to do this outside the storyboard because the same button item changes depending if the user is logged in or not. It reads "Login/Register" if a user is not logged in and goes to a login xib file and if a user is logged in it reads "Add Story" and goes to a add story xib file.


Solution

  • First, use an IBOutlet to create a var of type UIBarButtonItem and an action method for the button. You can then access the button programmatically to update it's label (logged in/out) when the view appears. You can do both of these by control-dragging (or right-click drag) from the button in the storyboard to the swift file.

    In the storyboard, setup two segues that go to different views (i.e. "LoginSegueIdentifier" and "AddStorySegueIdentifier". Inside the action method, check if the user is logged in or not. Depending on the result, perform a segue with an the identifier matching the segue identifier.

    To Login...

    self.performSegueWithIdentifier("LoginSegueIdentifier", sender: self)
    

    To Add story

    self.performSegueWithIdentifier("AddStorySegueIdentifier", sender: self)
    

    Hope this helps. Let me know if you have any questions.

    UPDATE: To clarify, this is pretty common (at least in my experience) and you can definitely achieve this with storyboards.