2016-01-28 4 views
3

Я хочу перечислить исходящие segues из UIViewController, как описано в Programmatically enumerate outgoing Segues for a UIViewController, но в Swift. (Swift 2, Xcode 7, iOS8 +).Swift: программно перечислять исходящие segues из UIVIewController

я могу сделать

override func viewDidLoad() { 
    super.viewDidLoad() 
    let s = valueForKey("storyboardSegueTemplates") 
    print("switchingVC: segues: \(s)") 
} 

и производит вывод как

switchingVC: segues: Optional((
    "<UIStoryboardPresentationSegueTemplate: 0x1754a130>", 
    "<UIStoryboardPresentationSegueTemplate: 0x17534f60>", 
    "<UIStoryboardPresentationSegueTemplate: 0x17534fc0>" 
)) 

, но я изо всех сил, чтобы произвести что-либо после этого. Я не могу найти никакого определения UIStoryboardPresentationSegueTemplate. Как я могу убедить Свифта рассказать мне, что внутри? Как я могу найти segue identifier?

Спасибо!

ответ

2

это valueForKey("storyboardSegueTemplates") является недокументированных собственности и UIStoryboardPresentationSegueTemplate является недокументированных класса. Опасайтесь отказа от App Store, если вы загружаете приложение в App Store.

Если вы хотите использовать это в ваших в доме проектов, используют следующим образом

for template in (valueForKey("storyboardSegueTemplates") as? [AnyObject])! { 
    if let identifier = template.valueForKey("identifier") as? String { 
     print("identifier - " + identifier) 
    } 
    else { 
     print("no identifier for \(template)") 
    } 
} 

Найдено от https://github.com/JaviSoto/iOS9-Runtime-Headers/blob/master/Frameworks/UIKit.framework/UIStoryboardSegueTemplate.h

+0

Отлично! Это очень помогает, особенно для ссылки github. – emrys57

+0

Это может сработать, но остерегайтесь процесса утверждения App Store – Johnykutty