megabyte
megabyte

Reputation: 1

Got SIGABRT when running my first iOS app

Trying to write my first iPhone application using Xcode 5.1. Here is part of my AppDelegate code

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    self.storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
    self.viewController = [self.storyboard instantiateViewControllerWithIdentifier:@"AddViewController"];
    self.navigationController = [[UINavigationController alloc] initWithRootViewController:self.viewController];
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    [self.window setRootViewController:self.viewController];
    [self.window addSubview:self.navigationController.view];
    [self.window makeKeyAndVisible];

    return YES;
}

I have a storyboard called "Main.Storyboard" with Navigation Controller and View Controller.

When I run my app I get SIGABRT error with NSInternalInconsistencyException exception.

Could anyone help me to fix this error?

Thanks.

Upvotes: 0

Views: 338

Answers (3)

Oleksandr Matrosov
Oleksandr Matrosov

Reputation: 27113

If you use storyboard as a main interface you don't need to setup any code. So you can add UINavigationController to the scene in you storyboard. Then set rootViewController using connection inspector.

Check the video for understanding: link

the code will look like this:

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

Upvotes: 0

Nitin Gohel
Nitin Gohel

Reputation: 49710

why you adding subview as a UINavigationController.view and root-view as a view-controller? Your code must be look like this:-

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    self.storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
    self.viewController = [self.storyboard instantiateViewControllerWithIdentifier:@"AddViewController"];
    self.navigationController = [[UINavigationController alloc] initWithRootViewController:self.viewController];
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    [self.window setRootViewController:self.navigationController];

    [self.window makeKeyAndVisible];

    return YES;
}

And verified that identifier of your viewcontroller is setting correct or not that you are given in above.

Upvotes: 2

Anand Suthar
Anand Suthar

Reputation: 3798

Try this

-(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
  UIStoryboard *storyBord = [UIStoryboard storyboardWithName:@"Main_iPad" bundle:[NSBundle  mainBundle]];
  self.window.rootViewController = [storyBord instantiateInitialViewController] ;
 [self.window makeKeyAndVisible];
 return YES;
}

Upvotes: 0

Related Questions