Черный экран после запуска приложения

Я устанавливаю Первый viewController, который появится при запуске приложения. Это мой AppDelegate.h:

#import "AppDelegate.h"
#import "TutorialController.h" // a simple UIViewController

@implementation AppDelegate

@synthesize window;

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

    window.rootViewController = [[TutorialController alloc] init];

    [window makeKeyAndVisible];

    return YES;
}

Это не дает никакого предупреждения, но, запуская приложение, после заставки появляется только черный экран. Без этого кода все работает нормально. Я не могу сделать это в StoryBoard, потому что после решения этой проблемы я должен добавить другие вещи... Что может быть не так? Спасибо!

Решено: Решено с помощью ответа Followben.

2 ответа

.час:

@class MainViewController;

@interface AppDelegate : UIResponder <UIApplicationDelegate>

@property (strong, nonatomic) UIWindow *window;
@property (strong,nonatomic) MainViewController *mainViewController;

.m:

#import "MainViewController.h"

@implementation AppDelegate
@synthesize mainViewController;


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


    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    self.mainViewController = [[MainViewController alloc] initWithNibName:@"MainViewController" bundle:nil];
    self.window.rootViewController = self.mainViewController;
    [self.window makeKeyAndVisible];
    return YES;
}

РЕДАКТИРОВАТЬ, с полной ссылкой на проект (в архиве) (работает:))

EDIT2:

если вы работаете с раскадровкой, создайте файл раскадровки и назначьте ему раскадровку проекта, как показано на рисунке: основной интерфейс совпадает с именем файла раскадровки.

введите описание изображения здесьи вам не нужно ничего писать в делегат приложения:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    // Override point for customization after application launch.
    return YES;
}

Вы можете установить начальную страницу, переместив эту маленькую стрелку в ViewController, который вы хотите установить стартером, как на этом рисунке:

введите описание изображения здесь

если вы хотите назначить свой ViewController (в раскадровке) с новым TutorialViewController, сделайте так:

введите описание изображения здесь

Пока я знаю, эта проблема происходит из-за (void) метода loadView. Поэтому удалите или закомментируйте этот метод и вместо этого используйте - (void)viewDidLoad, чтобы загрузить все.

Для меня это потому, что, вероятно, я запускаю iOS 12.4, но в проекте iOS по умолчанию есть какой-то делегат сцены, который, как указано, доступен только для iOS 13. Хорошая работа, яблоко, запутавшая разработчиков, создав неработающий код.

Другие вопросы по тегам