Organizational Research By

Surprising Reserch Topic

how to create an empty application in xcode 6 without storyboard


how to create an empty application in xcode 6 without storyboard  using -'ios,xcode,xcode6'

Xcode6 has removed the Empty Application template when creating a new project. How can we create an empty application (without Storyboard) in Xcode6, like in earlier versions?
    

asked Sep 29, 2015 by gauravsinghal83
0 votes
21 views



Related Hot Questions

8 Answers

0 votes

There is no option in XCode6 for directly creating an Empty Application as in XCode5 and earlier. But still we can create application without Storyboard in XCode6 by following these steps:

  1. Create an Single View Application with XCode6
  2. Remove Main.storyboard and LaunchScreen.xib (select them, right-click, and choose to either remove them from the project, or delete them completely).
  3. Remove "Main storyboard file base name" and "Launch screen interface file base name" entries in Info.plist file.
  4. Open AppDelegate.m, and edit applicationDidFinishLaunchingWithOptions so that it looks like this:

    - (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;
    }
    

    For Swift:

    func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool 
    {
        self.window = UIWindow(frame: UIScreen.mainScreen().bounds)
        self.window?.backgroundColor = UIColor.whiteColor()
        self.window?.makeKeyAndVisible()
        return true
    }
    
answered Sep 29, 2015 by mca.agarwal
0 votes

A simple approach would be to copy the XCode 5's Empty Application template to XCode 6's templates directory.

You can download XCode 5's Empty Application template from here and copy it to /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/Xcode/Templates/Project Templates/iOS/Application directory.

Edit
As suggested by @harrisg in a comment below, You can place the above mentioned template in ~/Library/Developer/Xcode/Templates/Project Templates/iOS/Application/ folder so that it may be available even if Xcode gets updated.
And if there is no such directory present, then you might have to create this directory structure: Templates/Project Templates/iOS/Application/ in ~/Library/Developer/Xcode/

Using this simple approach i'm able to create an Empty Application in XCode 6. (Screenshot attached below)

Xcode Empty Application Template Hope this helps!

answered Sep 29, 2015 by sachin wagh
0 votes

Akhils answer is totally correct. For those of us using Swift, it would be like this:

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
    self.window = UIWindow(frame: UIScreen.mainScreen().bounds)
    self.window?.backgroundColor = UIColor.whiteColor()
    self.window?.makeKeyAndVisible()
    return true
}
answered Sep 29, 2015 by mca.agarwal
0 votes

There are a few more steps that you need to do:

  1. To add a prefix file. (If you need it)
  2. To add a default launch image, otherwise the app size will be 320x480 on iPhone 5.

So here is a full tutorial:

  1. remove Main.storyboard file
  2. remove LaunchScreen.xib file
  3. remove "Main storyboard file base name" property in Info.plist
  4. remove "Launch screen interface file base name" property in Info.plist
  5. add "[app name]-Prefix.pch" file to supporting files with contents:

    #import 
    
    #ifndef __IPHONE_3_0
    #warning "This project uses features only available in iOS SDK 3.0 and later."
    #endif
    
    #ifdef __OBJC__
    #import 
    #import 
    #endif
    
  6. add "$SRCROOT/$PROJECT_NAME/[pch file name]" to project settings -> Build Settings -> Apple LLVM 6.0 - Language -> "Prefix Header"

  7. add "YES" to to project settings -> Build Settings -> Apple LLVM 6.0 - Language -> "Precompile Prefix Header"
  8. open "Image.xcassets" and add LaunchImage
  9. build the project, then there will be a warning about missing default launch image, just press on the warning and select to add the default, this will add "Default-568h@2x" OR - If you want to use splash images from "Images.xcassets", go to the project settings -> TARGETS -> General -> in "Launch Images Source" choose to use asset catalog, it will create a new one, you can choose then, which to use as asset catalog from the existing.
  10. implement application:didFinishLaunchingWithOptions: method:

    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;
    
answered Sep 29, 2015 by patilkiran.101
0 votes

There is one more step that you need to do:

1)remove Main storyboard file base name in plist file

//AppDelegate.h


@property (strong, nonatomic) UIViewController *viewController;
@property (strong, nonatomic) UINavigationController *nav;

//AppDelegate.m

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {`enter code here`
    // Override point for customization after application launch.

    CGRect screenBounds = [[UIScreen mainScreen] bounds];

    UIWindow *window = [[UIWindow alloc] initWithFrame:screenBounds];


    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];



    self.viewController = [[UIViewController alloc] initWithNibName:@"ViewController" bundle:nil];

    self.nav = [[UINavigationController alloc] initWithRootViewController:self.viewController];

    [window setRootViewController:  self.nav];

    [window makeKeyAndVisible];

    [self setWindow:window];

    return YES;
}
answered Sep 29, 2015 by abhi
0 votes

I have the original Empty Application template which was used in Xcode versions prior to Xcode 6. I have uploaded it here.

You can either download it and paste it in the Xcode template directory manually or install it using the package manager for Xcode, Alcatraz. Just search for Xcode Empty Application.

answered Sep 29, 2015 by devkumargupta
0 votes

I am using XCode6 Beta & I searched for another solution of this problem by adding Empty template from XCode5.x.x to XCode6 Beta.

For this right click on XCode5.x.x in Applications click 'Show Package Content' and copy 'Empty Application.xctemplate' from given path

Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/Xcode/Templates/Project Templates/Application

Now quit the Window & open given path for XCode6

Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/Xcode/Templates/Project Templates/iOS/Application/

Paste 'Empty Application.xctemplate' inside Application folder. Now restart XCode6 by quiting & create new project. You will get 'Empty Application' option.

Now when I am creating new Empty project,a .pch file automatically added in project (Which we have to add manually in XCode6)

Hope it will work

answered Sep 29, 2015 by ajit.chavhan
0 votes

Remove the Main.storyboard file

This can simply be deleted.

Update the ProjectName-Info.plist file

Remove the Main storyboard base file name key.

Create a nib file and link to the project’s view controller

1.Create a nib file (File –> New –> File –> View)

2.Update the File's Owner's class to whatever the project’s view controller is called

3.Link the File's Owner's view outlet to the view object in the nib file

Update the app delegate

1.Import the project’s view controller’s header file

2.Update the application:didFinishLaunchingWithOptions: method:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    // Override point for customization after application launch.
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    MyViewController *viewController = [[MyViewController alloc] initWithNibName:@"MyViewController" bundle:nil];
    self.window.rootViewController = viewController;
    [self.window makeKeyAndVisible];
    return YES;
}
answered Sep 29, 2015 by param.oncemore

...