Внедрение библиотеки SWRevealViewConroller (выдвижное меню) в несколько раскадровок

Я пытаюсь реализовать SWRevealViewController Library, как описано в видеоруководстве, мне это удалось, но я не хочу все на 1 раскадровке, я хочу разбить на 2 раскадровки

Код AppDelegate:

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {

    storyboard = UIStoryboard(name: "MenuDrawer", bundle: nil)           
    initialViewController = storyboard.instantiateViewControllerWithIdentifier("SWRevealViewController") as! UIViewController

    self.window?.rootViewController = initialViewController
    self.window?.makeKeyAndVisible()
    return true    
}

Прямо сейчас в раскадровке MenuDrawer есть все

  1. SWRevealViewCONtroller
  2. TableViewController
  3. НавигационныйКонтроллер
  4. Рутвиевконтроллер

и ниже, которые определены в библиотеке:

  1. segue1 (sw_rear) : between SWRevealViewController --> TableViewController
  2. segue2 (sw_front) : between SWRevealViewController --> NavigationController

теперь я хочу 3 и 4 в другой раскадровке. но когда я перемещаю 3 и 4 в другую раскадровку, как мне создать переход 2 между раскадровками


person T_C    schedule 28.05.2015    source источник


Ответы (4)


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

let storyBoard : UIStoryboard = UIStoryboard(name: "SecondStoryBoard", bundle:nil)

  let deleteViewController = storyBoard.instantiateViewControllerWithIdentifier("SecondNavigationController") as UINavigationController
person Icaro    schedule 28.05.2015
comment
куда вставить этот код? [обновил мой вопрос с более подробной информацией] - person T_C; 28.05.2015

насколько известно, вам не нужно снова нажимать переход 2 на 3 и 4. вам нужно сослаться на новый вид (3 и 4) на переходе 2. в Obj-c будет так:

UIStoryboard *mainStoryboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
SWRevealViewController *view = [mainStoryboard instantiateViewControllerWithIdentifier:identifier];
[view setModalTransitionStyle:UIModalTransitionStyleCoverVertical];
[self.navigationController pushViewController:view animated:YES];

где "self" - это ViewController, в котором был создан segue 2. надеюсь ответил на ваш вопрос.

person Ostanik    schedule 28.05.2015

Попробуйте это в первую очередь. Создайте другую раскадровку и добавьте то, что вам нужно, затем вызовите другую раскадровку в коде AppDelegate:

func application(application: UIApplication,didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {

var storyboard = UIStoryboard(name: "MenuDrawer", bundle: nil)   
var storyboard1 = UIStoryboard(name: "NewStoryBoardName", bundle: nil)          
var initialViewController = storyboard.instantiateViewControllerWithIdentifier("SWRevealViewController") as! UIViewController
var initialViewController1 = storyboard1.instantiateViewControllerWithIdentifier("SWRevealViewController") as! UIViewController

self.window?.rootViewController = [initialViewController,initialViewController1]
self.window?.makeKeyAndVisible()
return true

}
person Irshad Qureshi    schedule 30.05.2015
comment
это кажется многообещающим, один вопрос: мне нужно иметь SWRevealViewController на обеих раскадровках?? или это другой RootViewController - person T_C; 02.06.2015
comment
Вы должны поместить это в оба .. !! - person Irshad Qureshi; 02.06.2015
comment
получение 2 ошибок компилятора для строки self.window?.rootViewController = [initialViewController,initialViewController2] ........ 1 --› '_??' не конвертируется в 'UIViewController' .... 2--› '‹‹тип ошибки››?' не конвертируется в «UIViewController» - person T_C; 04.06.2015

Вы не можете создавать переходы между раскадровками с помощью Interface Builder. Это возможно только программно, например:

let storyBoardTwo = UIStoryboard(name: "storyBoardTwo", bundle: nil)

// Pick a view controller using it's identifier string set in Interface Builder.
let myVC = storyBoardTwo.instantiateViewControllerWithIdentifier("aViewController") as! UIViewController // Or use more specific (custom) type

// Push it to the navigation controller
self.navigationController.pushViewController(myVC, animated: true)

pushViewControllerпросто поместит myVC сверху. Этот код — то, что в конечном итоге сделает переход. Вы можете разместить этот код в любом месте существующего ViewController, при нажатии кнопки IBAction или где угодно.

Если у нажатого ViewController есть какие-либо переходы (из раскадровки или кода), они все равно будут работать, как и ожидалось.

Это, конечно, работает, если вы хотите программно загрузить ViewController из одной и той же раскадровки.

person Mikael Hellman    schedule 30.05.2015