Черный экран после запуска приложения
Я устанавливаю Первый 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, потому что после решения этой проблемы я должен добавить другие вещи... Что может быть не так? Спасибо!
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. Хорошая работа, яблоко, запутавшая разработчиков, создав неработающий код.