Подтвердить что ты не робот

Загрузка UIStoryboard из делегата приложения

Я пытаюсь загрузить UIStoryboard из делегата приложения .m следующим образом:

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

UIStoryboard *storybord = [UIStoryboard storyboardWithName:@"MainStoryboard_iPhone" bundle:[NSBundle mainBundle]];
UIViewController *vc =[storybord instantiateInitialViewController];
[self.window addSubview:vc.view];

return YES;
}

В чем проблема с этим кодом? Есть идеи?

4b9b3361

Ответ 1

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

   UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard_iPhone" bundle:[NSBundle mainBundle]];
   UIViewController *vc =[storyboard instantiateInitialViewController];

   // Set root view controller and make windows visible
   self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
   self.window.rootViewController = vc;
   [self.window makeKeyAndVisible];

   return YES;
}

Попробуйте это. Я думаю, что отсутствует установленный контроллер корневого представления и делает видимыми окна.

Ответ 2

Из вашего кода я вижу, что объект UIWindow не инициализирован. Вы должны инициализировать его, если не укажете имя раскадровки в App-Info.plist. Кроме того, сделайте клавишу "Окно" и видимой. Пожалуйста, измените свой код, как показано ниже:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.window=[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
UIStoryboard *storybord = [UIStoryboard storyboardWithName:@"MainStoryboard_iPhone" bundle:[NSBundle mainBundle]];
UIViewController *vc =[storybord instantiateInitialViewController];
[self.window addSubview:vc.view];
[self.window makeKeyAndVisible];
return YES;
}

Ответ 3

Теперь это не работает.

В плагине настроек сборки добавляется запись для Main Storyboard (или что-то в этом роде). Все, что вам нужно в applicationDidFinishLoading, возвращается YES;

Если вы начинаете новый проект с тисками раскадровки, вы можете видеть точную запись.

При этом вам не нужно загружать начальное представление, поскольку оно берет его из файла раскадровки (есть флаг Initial View).

НТН