Раскадровка Swift ios7 - запустить основную сцену самостоятельно

Я хочу сам контролировать, какие сцены видны от А до Я, если это возможно.

Я новичок в iOS, но решил использовать раскадровку, потому что это направление, в котором все движется.

С моей точки зрения, я собираюсь рассматривать его как инструмент для создания нескольких сцен в одном месте, но я хочу управлять переходами в своем собственном коде. (Я переношу с другого языка и инструмента, который уже управляет и отслеживает сам логический поток)

Это подводит меня к моему вопросу - я бы предпочел сам загружать/выбирать свою первую/основную сцену при запуске и "запускать" ее самостоятельно. Как мне лучше всего это сделать?


person Tom    schedule 30.01.2016    source источник


Ответы (2)


Да, вы могли бы это сделать. Для каждой раскадровки у вас есть начальный контроллер представления, и каждый контроллер представления в раскадровке имеет уникальный идентификатор. Таким образом, при создании объекта вью-контроллера в коде вы можете просто указать идентификатор вью-контроллера, который вы хотите создать.

Первая сцена, которая будет видна после заставки, — это корневой контроллер представления, который также можно создать программно и загрузить из раскадровки, используя идентификатор для этого контроллера представления. Вы также можете загрузить из раскадровки без использования какого-либо идентификатора, но в этом случае будет загружен начальный контроллер представления.

Идентификатор

Вы можете установить идентификатор для контроллера представления, как указано выше, в раскадровке.

person Vishnu gondlekar    schedule 30.01.2016
comment
В настоящее время у меня есть две сцены в Main.storyboard - каждая со своим собственным контроллером представления ViewControllerMainList и ViewControllerMainGrid - место в файле ViewControllermain.swift - person Tom; 31.01.2016
comment
Что ты хочешь делать? - person Vishnu gondlekar; 31.01.2016
comment
Я пытаюсь пойти по маршруту ak2g - я не могу заставить его работать в данный момент, но предполагаю, что в какой-то момент это будет - это решение отлично подойдет мне. - person Tom; 31.01.2016
comment
Вы установили идентификатор для контроллера просмотра в раскадровке? - person Vishnu gondlekar; 31.01.2016
comment
Я считаю, что теперь у меня это работает - я действительно пробовал идентификатор раскадровки, но опечатался там. Спасибо всем за помощь, я проголосую за все, что смогу :) - person Tom; 31.01.2016

Если вы хотите, чтобы какой-либо контроллер представления отображался сначала, просто щелкните контроллер представления в раскадровке и щелкните начальный контроллер представления.

Из кода (в AppDelegate)

Быстрый

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
    self.window = UIWindow(frame: UIScreen.mainScreen().bounds)

    var storyboard = UIStoryboard(name: "Main", bundle: nil)

    var initialViewController = storyboard.instantiateViewControllerWithIdentifier("LoginSignupVC") as! UIViewController

    self.window?.rootViewController = initialViewController
    self.window?.makeKeyAndVisible()

    return true
}

Цель С

   - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary*)launchOptions
{
self.window = [[UIWindow alloc] initWithFrame:UIScreen.mainScreen.bounds];

UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];

UIViewController *viewController = // determine the initial view controller here and instantiate   it with [storyboard instantiateViewControllerWithIdentifier:<storyboard id>];

self.window.rootViewController = viewController;
[self.window makeKeyAndVisible];

return YES;
}
person ak2g    schedule 30.01.2016
comment
Это выглядит многообещающе. Спасибо! - person Tom; 30.01.2016
comment
Когда я пытаюсь создать экземпляр ViewControllerWithIdenifier, код/приложение просто завершается с SIGABRT. Моя раскадровка называется Main, раскадровка, поэтому я вставил ее как строку раскадровки. (Проверка во время отладки/этапа кажется, что это было успешно восстановлено.) Класс контроллера представления, который я хочу создать, называется ViewControllerMainList (который находится в файле ViewControllermain.swift, который, кроме того, также содержит класс ViewControllerMainGrid) - person Tom; 31.01.2016