iOS Storyboards Should I use them or not?

12,973

Solution 1

I'd recommend against using either storyboards or Interface Builder.

  • You'll learn Objective-C faster if you spend more time using it. Switching between IB and code, you'll have two things to learn. The context switching will still slow you down later on.
  • Nibs and storyboards are big XML files that don't play well with source control; if you're working on one at the same time as someone else, you will get merge conflicts.
  • You can't see everything that's going on at once in IB, so it's hard to track down things like layout problems.
  • You can't search or replace in IB the way you can in code
  • Nibs and storyboards put your view logic in your controllers. Whether that's a problem for you depends on how much of an MVC purist you are.
  • If you want to port your apps to/from Android, IB will make it much harder.

This all comes from experience. I started out running a small software team developing iOS apps using IB (storyboard wasn't out yet) and within a year it had caused so many problems that I'd had to forbid its use. Our productivity went way up when we stopped using it.

Solution 2

I tend to avoid storyboards for anything apart from perhaps a quick prototype. If you know you have a very simple app which isn't going to get complicated, and you're the only developer, storyboards might be ok.

Here are a few blog posts that detail some of the pain points when using storyboards:

Both of the above are a bit dated, but I believe the pertinent points still hold true.

Note that in theory you need to use a storyboard(s) to get static tables, which can be useful. To get this benefit, you could put only the static tables in storyboard files (note: you can have multiple storyboard files in an app) and use xibs or just code for the rest of the UI.

Solution 3

I don't think this question is really answerable. There are pros and cons of any technical decision and this one is no different.

Pros:

  • Visual, so you get a much better idea of what your app will look like more quickly
  • Less code
  • Autolayout can be easier
  • It's not all-or-nothing. You can build the "base" in Storyboards and finish it off in code

Cons:

  • A big hairball of an XML file makes merge conflicts pretty nasty
  • Less flexibility than code (no inheritance, etc.)
  • If you have lots of screens in your app, using a single storyboard can get pretty difficult unless you have a vast screen!

Solution 4

I think it's not important to use it or not,the most important is how your application is?(quality, beautiful, fast...). StoryBoard is great for beginner to shorten design time and understand. But when to become professional developer, you will love to draw your interface by coding because typing more faster than graphic.

Solution 5

It depends only on you. If you developing your application alone, storyboards are very useful. If you work in a team, it's better yo use .xibs because there is less problems with merging them with svn in comparison to storyboards

Share:
12,973
EGHDK
Author by

EGHDK

Updated on June 17, 2022

Comments

  • EGHDK
    EGHDK almost 2 years

    I am new to iOS development (No apps created yet), but I ask for advice from my friend that has really high rated apps on the market. He said not to use storyboards.

    As much as I want to take his advice, they seem really helpful.

    • Is this something that can cause problems for my app in the future?
    • Is there any reason I may want to not use storyboards?

    Coming from an Android background, I don't see why I should use them.

  • Anton
    Anton over 11 years
    I agree that storyboards can be a great introduction for a beginner but I do not think that "professionals" prefer to set up their interfaces by code, nor is it always faster than the graphical approach. For iOS 5+ apps, storyboards can make designing the interfaces and flow of an application considerably easier, depending on the needs of the app.
  • Fogmeister
    Fogmeister over 10 years
    Point 1 - use tabs in Xcode to keep tasks separated, one tab for code, one for the storyboard. Point 2 - no longer relevant as of Xcode 5, yes they were a bit of a pain but this has been fixed. Point 3 - not sure what this is referring to. I have no problem seeing things, especially when they are visually drawn on the screen. Definitely a lot easier than interpreting code. Point 4 - yes you can, they are XML files, you can search and replace easily, but with refactoring you don't need to. Point 5 - no they don't. Point 6 - I'm writing iOS apps not Android.
  • Fogmeister
    Fogmeister over 10 years
    If anything Point 5 is exactly opposite to what you said. IB takes all your view and puts it in to one place... the view. By doing everything in code you are putting additional code into you controller just to set up the view. These all seem like the opinions of someone who didn't like the fact that there was a change and never went back. Yes Interface Builder was a pain to begin with but has since improved massively. I use it in all my apps.
  • Matt
    Matt over 10 years
    This is bad advice. In industry, people are definitely using interface builder. I think storyboards are more up in there at the moment. If you don't learn these skills you will mot be able to work as a modern iOS developer.
  • elimirks
    elimirks over 10 years
    Point 6: You shouldn't be copying the exact layout for different platforms anyways.