如何获取情节提要的字符串名称?

Posted

技术标签:

【中文标题】如何获取情节提要的字符串名称?【英文标题】:How do I get the string name of a storyboard? 【发布时间】:2016-07-11 13:41:14 【问题描述】:

我已经查看了以下内容以寻求指导,但无济于事:

How to know the current storyboard name?

我正在尝试根据以下答案使用我的故事板从远程通知中打开特定的视图控制器:

Present specific view controller in didReceiveRemoteNotification with Swift

    let mvc = MainViewController()
    let storyBoardNameString = mvc.storyboard. //<-proposed solution? Nothing from auto complete shows up
    let storyboard = UIStoryboard(name: storyBoardNameString , bundle: nil) 
    storyboard.instantiateViewControllerWithIdentifier("some-view-controller")

我检查了“文件检查器”、“快速帮助检查器”、“身份检查器”、“属性检查器”、“大小检查器”,甚至“连接检查器”,也没有运气。

当我在我的情节提要上选择一个视图控制器并尝试查找当前情节提要的名称时,我只能找到视图的情节提要 ID,而不是情节提要的名称。

任何解决方案将不胜感激,否则我将尝试找到另一种方法来完成我的任务。

【问题讨论】:

如果您可以从mvc 对象中获取storyboard,那么您不需要命名它。首先你已经有了storyboard.. 可能是一个毫无意义的问题,但我想我必须在 mvc 上使用 viewController 才能访问 mvc 对吗? 【参考方案1】:

我的同事刚刚告诉我这是不带“.storyboard”扩展名的文件名。问候。

【讨论】:

如果您已经有任何视图控制器实例化,这不会改变您不需要故事板名称的事实。 我知道,但它仍然回答了原来的问题:)【参考方案2】:

试试下面的代码可能对你有帮助。

let mvc = MainViewController()
let storyBoardNameString = mvc.restorationIdentifier!//it will give identifier
let storyboard = UIStoryboard(name: storyBoardNameString , bundle: nil) 
storyboard.instantiateViewControllerWithIdentifier("some-view-controller")

【讨论】:

【参考方案3】:

也许我的回答对你的问题不正确,但你可以看看考虑一下。

制作有效载荷格式,并用它创建特定的 UIViewController。

let payload = ["storyboard" : "StoryboadNameYouWant", "viewcontroller" : "ViewControllerName", "parameters" : "YourParameters"]


func handlePayload(payload: Dictionary<String, String>) 
     let storyboard = UIStoryboard(name: payload["storyboard"]!, bundle: nil)
     let vc = storyboard.instantiateViewControllerWithIdentifier(payload["viewcontroller"]!)
     // present vc

【讨论】:

以上是关于如何获取情节提要的字符串名称?的主要内容,如果未能解决你的问题,请参考以下文章

我有一个故事板,我推动这个。我想在启动控制器之前获取情节提要上的控件名称。如何?

如何从情节提要中获取 imageView 的大小?

如何从情节提要文件中获取现有的控制器对象?

如何获取使用情节提要创建的按钮的对象

如何获取情节提要的缺失内容?

如何以编程方式快速使用情节提要 ID 获取当前视图控制器(当前正在呈现)?