【问题标题】: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 对吗?

标签: ios swift storyboard


【解决方案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
    }
    

    【讨论】:

      猜你喜欢
      • 2016-05-15
      • 2019-01-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-21
      • 1970-01-01
      • 2018-06-20
      • 1970-01-01
      相关资源
      最近更新 更多