Загрузка 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;
}
В чем проблема с этим кодом? Есть идеи?
Ответы
Ответ 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).
НТН