Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Remove storyboard and start app with a .xib

I've tried to follow the instructions on this Question. But I must not be doing something correctly because I am still getting a SIGABRT before I even get into the ViewController methods.

Here are the steps:

  1. Copied all items on the view in the story board and pasted into the new xib view.
  2. Copied all contents of .h and .m view controller files into the new ones for the xib.
  3. Changed the Main nib file base name to the new xib name in the info.plist file.
  4. Tried to change the owner but I don't know if I'm doing that correctly.
  5. Edited the appdelegate didFinishLaunchingWithOptions file as follows:

    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
    
     {
        self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] ;
    
         // Override point for customization after application launch.
    
         TestViewController *test = [[TestViewController alloc]         initWithNibName:@"TestViewController" bundle:nil];
         UINavigationController *nav = [[UINavigationController alloc]  initWithRootViewController:test];
         self.window.rootViewController = nav;
    
         [self.window makeKeyAndVisible];
    
         return YES;
    }
    
  6. I even tried to start with an empty project like one of the last posts suggested and still get a SIGABRT when I try to run.

Has Apple made it impossible to remove the storyboard? I'm creating an SDK. I don't want a storyboard. But I do need one xib that is rotatable.

Help?

like image 838
Patricia Avatar asked Oct 22 '13 21:10

Patricia


People also ask

How do I turn off storyboard?

The first step is the same, delete Main. storyboard file and make sure you select "Move to trash" option to completely remove it.


2 Answers

You're going to want to create an empty application, then press cmd + n and choose coca touch > objective-c class. name the class RootViewController and leave the subclass alone (UIViewController) then check With XIB for user interface.

Once you've done that, go into your AppDelegate.m file and add the following code under - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions above return: YES

self.RootViewController = [[RootViewController alloc] init];
self.navController = [[UINavigationController alloc] initWithRootViewController:self.RootViewController];
self.navController.navigationBarHidden = YES;
[self.window addSubview:self.navController.view];

So, it should now look like this:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];

    self.window.backgroundColor = [UIColor whiteColor];
    [self.window makeKeyAndVisible];
    self.RootViewController = [[RootViewController alloc] init];
    self.navController = [[UINavigationController alloc] initWithRootViewController:self.RootViewController];
    self.navController.navigationBarHidden = YES;
    [self.window addSubview:self.navController.view];
    return YES;
}

then, add #import "RootViewController.h" just below #import "AppDelegate.h". after you do that, go to your AppDelegate.h file, and add @class RootViewController; above the @interface. Then, add the following code under @interface AppDelegate:

@property (strong, nonatomic) RootViewController *RootViewController;
@property (strong, nonatomic) UINavigationController *navController;

So your entire AppDelegate.h should now look like this:

#import <UIKit/UIKit.h>

@class RootViewController;

     @interface AppDelegate : UIResponder <UIApplicationDelegate>


     @property (strong, nonatomic) UIWindow *window;
     @property (strong, nonatomic) RootViewController *RootViewController;
     @property (strong, nonatomic) UINavigationController *navController;

@end

Now that you've done all of this you should be able to start coding your application like you usually would for a xib file! Good luck!

like image 188
Jojodmo Avatar answered Oct 07 '22 22:10

Jojodmo


1.Add viewcontroller Files Owner class

enter image description here

2.AppDelegate .h File

@property (strong, nonatomic) ViewController *viewController;

3.AppDelegate .m File

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    // Override point for customization after application launch.
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    // Override point for customization after application launch.
    self.viewController = [[ViewController alloc] initWithNibName:@"ViewController" bundle:nil];
    self.window.rootViewController = self.viewController;
    [self.window makeKeyAndVisible];

    return YES;
}

or

self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
self.window.backgroundColor = [UIColor whiteColor];
ViewController *loginVC = [[ViewController alloc] initWithNibName:@"ViewController" bundle:nil];
UINavigationController *navigationController = [[UINavigationController alloc]  initWithRootViewController:loginVC];
self.window.rootViewController = navigationController;
[self.window makeKeyAndVisible];

return YES;
like image 30
Gami Nilesh Avatar answered Oct 07 '22 21:10

Gami Nilesh