Black Screen


I am having an odd problem and I’m not too sure what is happening here. Whenever I try to launch the application I get nothing but a black iPhone screen on the simulator and my iPhone. Whenever I unplug my iPhone and try to launch the app from within my phone without launching it from my computer to my phone, the app closes it’s screen instantaneously every time that I try to view it.

This is my AppDelegate.m

#import "BNRAppDelegate.h"
#import "BNRQuizViewController.h"

@implementation BNRAppDelegate

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    // Override point for customization after application launch.
    BNRQuizViewController *quizVC = [[BNRQuizViewController alloc] init];
    self.window.rootViewController = quizVC;
    self.window.backgroundColor = [UIColor whiteColor];
    [self.window makeKeyAndVisible];
    return YES;

- (void)applicationWillResignActive:(UIApplication *)application
    // Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state.
    // Use this method to pause ongoing tasks, disable timers, and throttle down OpenGL ES frame rates. Games should use this method to pause the game.

- (void)applicationDidEnterBackground:(UIApplication *)application
    // Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later. 
    // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits.

- (void)applicationWillEnterForeground:(UIApplication *)application
    // Called as part of the transition from the background to the inactive state; here you can undo many of the changes made on entering the background.

- (void)applicationDidBecomeActive:(UIApplication *)application
    // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface.

- (void)applicationWillTerminate:(UIApplication *)application
    // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:.


This is my ViewController.m. I’m pretty sure the issue is in here somewhere.

#import "BNRQuizViewController.h"

@interface BNRQuizViewController ()

@property (nonatomic) int currentQuestionIndex;

@property (nonatomic, copy) NSArray *questions;
@property (nonatomic, copy) NSArray *answers;

@property (nonatomic, weak) IBOutlet UILabel *questionLabel;
@property (nonatomic, weak) IBOutlet UILabel *answerLabel;


@implementation BNRQuizViewController

- (instancetype)initWithNibName:(NSString *)nibNameOrNil
                         bundle:(NSBundle *)nibBundleOrNil
    // Call the init method implemented by the superclass
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self){
        // Create two arrays filled with questions and answers
        // and make the pointers point to them
        self.questions = @[@"From what is codnac made?",
                           @"What is 7 + 7?",
                           @"What is the capital of Vermont?"];
        self.answers = @[@"Grapes",
    // Return the address of the new object
    return self;
- (IBAction)showQuestion:(id)sender
    // Step to the next question
    // Am I past the last question?
    if (self.currentQuestionIndex == [self.questions count]){
        // Go back to the first question
        self.currentQuestionIndex = 0;
    // Get the string at that index in the questions array
    NSString *question = self.questions[self.currentQuestionIndex];
    //Display the string in the questino label
    self.questionLabel.text = question;
    // Reset the answer label
    self.answerLabel.text = @"???";


- (IBAction)showAnswer:(id)sender
    //What is the answer to the current question
    NSString *answer = self.answers[self.currentQuestionIndex];
    //Display it in the answer label
    self.answerLabel.text = answer;



I see nothing wrong with your code. Did you select a Single View Application or the Blank Application template when you started? Click on your project name, then General->Deployment Info-> Look under Main Interface and that field should be blank as shown in this screenshot:


Is there anything being logged to the console? Maybe something about a view not being loaded? Hm let us know!


I am having the same problem any ideas how to help it?

I did what this post said.
and I figured out my order was wrong in the BNRQuizViewController. Hope that helps.