2015-11-30 4 views
1

Я пытаюсь реализовать 3d Touch, и я хочу перейти к определенному viewController в приложении Master-Detail.3d touch перейти к определенному viewController

ViewController Я стремлюсь попасть в третий контроллер в иерархии:

MasterViewController ----> SettingsViewController ----> ThirdViewController

я могу получить доступ к ThirdViewController при нормальной работе через TabBarItem (, подключенный через segue к SettingsViewController прямо из IB), а затем через UIButton (, подключенный через Segue к ThirdViewController прямо из IB) в ThirdViewController.

i.e в MasterViewController ---> (tap barButtonItem) ----> SettingsViewControler ----> (коснитесь uiButton) ---> ThirdViewController.

Я уже внес изменения в info.plist и 3D сенсорный работает отлично и может назвать свое действие:

func application(application: UIApplication, performActionForShortcutItem shortcutItem: UIApplicationShortcutItem, completionHandler: (Bool) -> Void) { 

     var shortcutDictionary = shortcutItem.userInfo; 
     let shortcutString1 = shortcutDictionary!["key1"] as! String 

     if (shortcutString1 == "value1") { 

     // how do i get from here to the settingsController?? 

     } 

    } 

EDIT:

уже пробовали:

let viewController = MasterViewController() viewController.settingsButton.sendActionsForControlEvents(.TouchUpInside) 

который дает мне ошибку: фатальная ошибка, пытающаяся развернуть необязательное значение!

хотя это существует в MasterViewController

@IBOutlet weak var settingsButton: UIButton! 
+1

Вам нужно будет программно его вытолкнуть, что означает, что каждому диспетчеру просмотра нужно будет вызвать performSegueWithIdentifier на viewWillAppear. Вы можете сказать, что это не для того, чтобы оживить, чтобы это казалось мгновенным, однако вам нужно было бы передать переменную с каждым нажатием, сообщая ей, чтобы она продвигалась следующим образом. Для этого есть, вероятно, лучшие шаблоны, но это то, что приходит на ум для быстрой реализации. –

+0

@Matt Long Это именно то, что я сделал. Спасибо за ваш комментарий. –

+0

Прохладный. Дайте знать, если вы думаете о лучшем способе его реализации. –

ответ

0

Это код, я использую для быстрого доступа ....

func actionFromShortcut(sender: AnyObject!) { 


     let dispatchTime: dispatch_time_t = dispatch_time(DISPATCH_TIME_NOW, Int64(0.1 * Double(NSEC_PER_SEC))) 
     dispatch_after(dispatchTime, dispatch_get_main_queue(), { 


      self.performSegueWithIdentifier("shotcutToSettings", sender: nil) 

//some other stuff here..... 


     }) 

Кроме того, как на @ MattLong замечании я продублировал перетекает к моим контроллерам (один с одним и без анимации). Таким образом, переход ярлыка кажется одновременным, когда действие вызывается из ярлыка.

Вы заметите задержку 0,1. Это означает, что время MasterViewController вызывает нагрузку, когда я пытаюсь вызвать ярлык с холода (приложение не работает). Я получаю запрос с запросом viewController, но для возврата и, следовательно, сбоя будет существовать пустой MasterViewController.

Смежные вопросы