一尘不染

Swift:以编程方式枚举UIVIewController发出的传出消息

swift

我想列出UIViewController的传出脚本,如以编程方式枚举UIViewController的传出脚本所述,但在Swift中。(Swift 2,Xcode7,iOS8 +)。

我可以

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

并且产生像

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

但是之后我很难产生任何东西。我找不到的任何定义UIStoryboardPresentationSegueTemplate。我该如何说服Swift告诉我其中的内容?我如何找到segueidentifier

谢谢!


阅读 207

收藏
2020-07-07

共1个答案

一尘不染

valueForKey("storyboardSegueTemplates")UNDOCUMENTED
属性,UIStoryboardPresentationSegueTemplateUNDOCUMENTED类。如果您要将应用程序上载到AppStore,请当心被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找到

2020-07-07