Xcode 4.2 iOS Empty Application and storyboards

24,784

Solution 1

Comment out (or remove) the window creation and display code in AppDelegate.m as follows:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    // self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    // Override point for customization after application launch.
    // self.window.backgroundColor = [UIColor whiteColor];
    // [self.window makeKeyAndVisible];

    return YES;
}

When using a storyboard, a main UIWindow is created for you automatically. What is happening in your case is that you are creating another white window and putting it over the top of the tab UI.

ALSO - note that the Master/Detail template also gives you a core data option.

Solution 2

For an Empty Application project, you have to do two things, after you've added your Storyboard file...

  1. Add a row to your project Info.plist file:

    Key: Main storyboard file base name
    Value: Storyboard
    

    (or whatever you named your storyboard file)

  2. Delete the contents of application:didFinishLaunchingWithOptions: except return YES;:

    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
    {
        return YES;
    }
    

Solution 3

The Master-Detail and Utility project templates also offer Core Data as an option.

The Apple templates for Core Data are pretty horrible. They stuff far too much functionality into the app delegate and they use lazy loading unnecessarily, which just complicates things even further.

You're better off looking at the generated code and adding the functionality as a separate class in a project you start without Core Data.

To answer your immediate question though, the default empty template creates a window programmatically in the app delegate's application:didFinishLaunchingWithOptions: method. The story board sets a window up itself, so you need to remove that code from the app delegate. The only thing you need in that method is return YES;.

Share:
24,784
Amadan
Author by

Amadan

I'm #SOreadytohelp . :)

Updated on June 02, 2020

Comments

  • Amadan
    Amadan almost 4 years

    I'm an Xcode newbie, and I'm trying to make my first training app. Since apparently Empty Application template is the only template that offers pre-integrated Core Data, I choose that. However, after that, I can't get UI to work (it remains empty).

    What I did:

    • Empty Application template
    • New iPad Storyboard file
    • Splashed Tab Bar Controller onto it
    • Changed Main Storyboard in Project's Summary view
    • Hit ⌘R
    • Stared at pure-white iPad screen, without any tabs

    I tried diffing against another project that I created as a Tab Bar Application (which does reflect my Storyboard changes), without any insight.

  • Amadan
    Amadan over 12 years
    Never having seen Master/Detail on iPhone, I figured I couldn't make it Universal... Also, thank you, works perfectly.
  • Amadan
    Amadan over 12 years
    I normally dislike autogenerated code, but in this case, trying to get into a completely new ecosystem of tools and not knowing what anything does let alone how to make something new by myself, following along with templates still works best :( I'd love to be able to write it myself, but I guess it'll have to wait. BTW: not fair that I can't accept two answers >.<
  • Robin Summerhill
    Robin Summerhill over 12 years
    Master/detail is the standard navigation controller-based template used by many iPhone apps.
  • Amadan
    Amadan over 12 years
    Oh. I thought it was navigation + table :) Well, that simplifies things! (I thought master/detail was the thing on iPhone where you get the split view - which I haven't seen on iPhone. Shows how much I know :P )
  • Robin Summerhill
    Robin Summerhill over 12 years
    It is navigation + table because that's such a typical combination. however, you can strip out the table if you don't want it.
  • Pat
    Pat almost 11 years
    Your item 1 is a very important step! Nobody else seemed to mention it, thanks!