Linking a new viewcontroller to Storyboard?

42,656

Solution 1

Pull on a new UIViewController that will act as the login view controller onto the MainStoryboard. In the attribute inspector change the identifier to LoginViewController (or something appropriate). Then add

- (void)viewDidAppear:(BOOL)animated
{
    [super viewDidAppear:animated];

    UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
    UIViewController *vc = [storyboard instantiateViewControllerWithIdentifier:@"LoginViewController"];
    [vc setModalPresentationStyle:UIModalPresentationFullScreen];

    [self presentModalViewController:vc animated:YES];
}

to the First view controller and the login screen will be loaded from your storyboard and presented.

Hope this helps.

Solution 2

The answer by Scott Sherwood above is most correct answer I found after lot of searching. Though very slight change as per new SDK (6.1), presentModalViewController shows deprecated.

Here is very small change to above answer.

 UIStoryboard *sb = [UIStoryboard storyboardWithName:@"Storyboard" bundle:nil];
    HomeViewController * hvc = [sb instantiateViewControllerWithIdentifier:@"LoginView"];
    [hvc setModalPresentationStyle:UIModalPresentationFullScreen];
    [self presentViewController:hvc animated:YES completion:nil]; 

Solution 3

I'm new in this field. But if the first view controller is a navigation view controller and its rootviewcontroller is a table view controller. If you want to push a view controller like the LoginViewController when you click the cell, and you also want to go back to the table view by using the navigation bar. I recommend this way:

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath  {

   UIStoryboard *sb = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
   UIViewController *controller = [sb instantiateViewControllerWithIdentifier:@"LoginViewController"];
   [self.navigationController pushViewController:controller   animated:YES];
}

In this way, you can have the navigation.

By the way, I don't know why this kind of problem you asked will appear. I guess when the loginviewcontroller is created in the code, its view is not the view in the storyboard. If someone know the cause, please tell me! thanks!

Share:
42,656
Justin
Author by

Justin

Full-Stack Software engineer, full-time geek. Main languages: Java, Golang and Javascript

Updated on July 16, 2022

Comments

  • Justin
    Justin almost 2 years

    There is probably a simple solution but I can't figure it out.

    I am using storyboards for the interface.

    I start with a tab bar controller, but before the user is allowed to use the app the user has to authenticate himself trough a loginview which is modally pushed at the start.

    I want to configure the loginview at the same storyboard, but I can't seam to figure out how to link the view controller at the storyboard and my code.

    What I have done:

    • Create a new UIViewController subclass trough file > new > new file.
    • Drag a new UIViewController in the story board
    • Set the class in the custom class tab
    • drags a UILabel for test purpose.
    • run

    No label...