Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Push View Controller, Black Screen

I'm pushing to a new view controller and passing some data to it. When I run the application I can press the button and push to a new view but the screen is completely black. Any help is appreciated.

- (IBAction)button:(id)sender {

    NSString *firstField = self.field.text;
    NSString *secondField = self.field2.text;

    self.resultsArray = [[NSArray alloc] initWithObjects:firstField, secondField, nil];

    NSUInteger randomResult = arc4random_uniform(self.resultsArray.count);
    self.label.text = [self.resultsArray objectAtIndex:randomResult];

    ImagesViewController *ivc = [[ImagesViewController alloc] init];
    ivc.label = self.label.text;
    [self.navigationController pushViewController:ivc animated:YES];

}
like image 577
Brandon Houlihan Avatar asked Jul 25 '13 15:07

Brandon Houlihan


2 Answers

When you're using a storyboard, and you want to push a view controller in code (rather than with a segue), you need to give the controller an identifier, and create it like this:

    ImagesViewController *ivc = [self.storyboard instantiateViewControllerWithIdentifier:@"MyIdentifier"];
    ivc.label = self.label.text;
    [self.navigationController pushViewController:ivc animated:YES];
like image 67
rdelmar Avatar answered Nov 10 '22 04:11

rdelmar


The view controller you are pushing is not having any frame dimension set.It is always recommended to call designated init for objects. For view controllers, designated init method is

- (id)initWithNibName:(NSString *)nibName bundle:(NSBundle *)nibBundle

if you have a xib assign it like

ImagesViewController *ivc = [[ImagesViewController alloc] initWithNibName:<your xib> bundle:[NSBundle mainbundle];

if you are using custom view, assign a frame dimension and add it as subview

like image 2
slysid Avatar answered Nov 10 '22 02:11

slysid