2012-03-10 2 views
0

Я получаю следующий код ошибки при попытке протестировать запуск приложения.Корневой контроллер iOS при ошибке запуска

Application windows are expected to have a root view controller at the end of application launch 

Приложения было отлично работает как голое приложение оболочки (например, не функциональности реализована), но как только я добавил функцию ViewController.m он начал генерировать эту ошибку.

ViewController.m содержит.

// 
// BattTimeViewController.m 
// BattTime 
// 
// Created by James Krawczyk on 09/03/2012. 
// Copyright (c) 2012 James Krawczyk. All rights reserved. 
// 

#import "BattTimeViewController.h" 

@interface BattTimeViewController() 

@end 

@implementation BattTimeViewController 
@synthesize resDisplay; 

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    // Do any additional setup after loading the view, typically from a nib. 
} 

- (void)viewDidUnload 
{ 
    [self setResDisplay:nil]; 
    [super viewDidUnload]; 
    // Release any retained subviews of the main view. 
} 

- (void)batteryStatus 
{ 
    // Get current date time 

    datetrack = [NSDate date]; 

    // Instantiate a NSDateFormatter 

    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 

    // Set the dateFormatter format 

    //[dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"]; 

    // or this format to show day of the week Sat,11-12-2011 23:27:09 

    [dateFormatter setDateFormat:@"HH:mm:ss"]; 

    // Get the date time in NSString 

    NSString *dateInStringFormated = [dateFormatter stringFromDate:datetrack]; 

    NSLog(@"%@", dateInStringFormated); 

    // Release the dateFormatter 

    //[dateFormatter release]; 


    NSArray *batteryStatus = [NSArray arrayWithObjects: 
           @"Battery status is unknown.", 
           @"Battery is in use.", 
           @"Battery is charging.", 
           @"Battery is fully charged.", nil]; 

    if ([[UIDevice currentDevice] batteryState] == UIDeviceBatteryStateUnknown) 
    { 
     [resDisplay setText:[batteryStatus objectAtIndex:0]]; 
     NSLog(@"%@", [batteryStatus objectAtIndex:0]); 
    } 
    else 
    { 
     NSString *msg = [NSString stringWithFormat: 
         @"Battery charge level: %0.2f%%\n%@", [[UIDevice currentDevice] batteryLevel] * 100, dateInStringFormated ]; 
     [resDisplay setText:msg]; 
     NSLog(@"%@", msg); 
    } 
} 

- (void)loadView 
{ 

    // Enable monitoring of battery status 
    [[UIDevice currentDevice] setBatteryMonitoringEnabled:YES]; 

    // Print current status 
    [self batteryStatus]; 

    // Request to be notified when battery charge or state changes 
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(batteryStatus) name:UIDeviceBatteryLevelDidChangeNotification object:nil]; 
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(batteryStatus) name:UIDeviceBatteryStateDidChangeNotification object:nil]; 

} 

- (void)dealloc 
{ 
    [[NSNotificationCenter defaultCenter] removeObserver:self]; 

} 
@end 

ViewController.h is;

// 
// BattTimeViewController.h 
// BattTime 
// 
// Created by James Krawczyk on 09/03/2012. 
// Copyright (c) 2012 James Krawczyk. All rights reserved. 
// 

#import <UIKit/UIKit.h> 

@interface BattTimeViewController : UIViewController 
{ 
     NSDate *datetrack; 
} 

@property (weak, nonatomic) IBOutlet UILabel *resDisplay; 




@end 

Я проверил некоторые другие вопросы и проверил main.m тоже, но насколько я знаю, все выглядит нормально. Однако, как я уже сказал, он работает нормально, пока я не добавил эти функции.

Наконец main.m является

// 
// main.m 
// BattTime 
// 
// Created by James Krawczyk on 09/03/2012. 
// Copyright (c) 2012 James Krawczyk. All rights reserved. 
// 

#import <UIKit/UIKit.h> 

#import "BattTimeAppDelegate.h" 

int main(int argc, char *argv[]) 
{ 
    @autoreleasepool { 
     return UIApplicationMain(argc, argv, nil, NSStringFromClass([BattTimeAppDelegate class])); 
    } 
} 

ответ

1

Я не знаю, если ваш BattTimeAppDelegate использует СИБ, раскадровку или (мазохистский) код для создания окна, но эта ошибка означает, что ваш UIWindow экземпляр не есть rootViewController. Если вы используете NIB или SB, вам нужно связать rootViewController Window с вашим BattTimeViewController. Если вы используете код (пожалуйста, не делайте этого), вам нужно сделать что-то вроде «window.rootViewController = aHandMadeBattTimeViewController;»

+0

Используется формат StoryBoard. Как мне связать его? Причина, по которой я предполагал, что она уже связана, поскольку она работала до этого. – jskrwyk

+1

Ваш VC должен быть «Начальным контроллером просмотра» (в Инспекторе атрибутов), и ваш AppDelegate должен иметь сильное свойство «UIWindow * window». EDIT: И ваш SB должен быть «Главной раскадрой» в вашем Info.plist –

+0

Я проверил все эти и все они правильные. Это изменилось только при использовании кода в BattTimeViewController.m. – jskrwyk

 Смежные вопросы

  • Нет связанных вопросов^_^