Основная ошибка при запуске приложения iPad - PullRequest
0 голосов
/ 13 февраля 2012

У меня есть файл с именем MMAppDelegate.m:

#import "MMAppDelegate.h"

@implementation MMAppDelegate

@synthesize window;
@synthesize viewController;

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{

    viewController = [[MainViewController alloc] init];
    [window addSubview:viewController.view];

    // Override point for customization after application launch.
    [window makeKeyAndVisible];
    return YES;
}
//and more standard methods

MMAppDelegate.h:

#import <UIKit/UIKit.h>
#import "MainViewController.h"

@interface MMAppDelegate : UIResponder <UIApplicationDelegate> {
    UIWindow *window;
    MainViewController *viewController;
}

@property (nonatomic, retain) UIWindow *window;
@property (nonatomic, retain) MainViewController *viewController;

@end

MainViewController.m:

#import "MainViewController.h"

@implementation MainViewController

- (void)viewDidLoad {
    NSLog(@"view did load main view controller");
    [super viewDidLoad];

    self.view.backgroundColor = [UIColor redColor];
}

@end

И все же, когдаЯ запускаю программу, получаю черный экран и вывод:

2012-02-12 15:44:48.160 MoreMost[44076:f803] view did load main view controller
2012-02-12 15:44:48.163 MoreMost[44076:f803] Applications are expected to have a root view controller at the end of application launch

В чем проблема?

Ответы [ 2 ]

2 голосов
/ 13 февраля 2012

Измените эту строку:

[window addSubview:viewController.view];

на эту:

window.rootViewController = viewController;

И вам нужно будет создать окно, например:

window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
1 голос
/ 13 февраля 2012

Вам не нужно / не хотите добавлять представление контроллера представления как подпредставление. Вы хотите сделать свой контроллер корневым контроллером, а iOS позаботится обо всем остальном:

window.rootViewController = viewController;

То есть с iOS 4. (Не уверен, что ответ, если вы вернетесь раньше, чем это.)

Вам также необходимо создать окно, прежде чем использовать его. Что-то вроде

window = [[UIWindow alloc] initWithFrame:UIScreen.mainScreen.bounds];

Не уверен, что нет или просто не показывал ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...