【问题标题】:Is it possible to programmatically get the identifier of a basic UIViewController from an UIViewController or Storyboard in Swift/Objective-C?是否可以以编程方式从 Swift/Objective-C 中的 UIViewController 或 Storyboard 中获取基本 UIViewController 的标识符?
【发布时间】:2014-12-01 11:41:58
【问题描述】:

我知道我们可以根据它的标识符实例化一个特定的 UIViewController(见下文):

var myPageContentViewController = self.storyboard!.instantiateViewControllerWithIdentifier("A") as PageContentViewController

但我的问题与这一点无关,换句话说,我只想知道是否可以以编程方式(在源代码中)检索标识符(在我们的例子中为字符串值“A”)我在情节提要中设置了这个特定的 PageContentViewController(它是我项目中 UIViewController 的子类)?

注意:使用 Swift 开发语言而不是 Objective-C 开发语言的答案对我来说会更方便,即使我知道后者。供您参考,我使用的是 6.0.1 版本的 Xcode。

提前感谢您的回答。

【问题讨论】:

    标签: ios objective-c uiviewcontroller swift storyboard


    【解决方案1】:

    在 Swift 中:

     var str: String! = self.restorationIdentifier
    

    【讨论】:

    • 确保在情节提要中,您已在身份检查器中为相应的视图控制器标记了“使用情节提要 ID”。
    • @Sikander 为什么?我们只想要故事板ID,就是这样。为什么我们标记使用 Storyboard ID?
    • @King-Wizard 为什么?我们只想要故事板ID,就是这样。为什么我们标记使用 Storyboard ID?
    【解决方案2】:

    你可以通过在目标C中使用恢复标识符和以下代码获取UIViewController的标识符:

    NSString *restorationId = self.restorationIdentifier;
    

    希望这会对你有所帮助。

    【讨论】:

      【解决方案3】:

      使用restorationIdentifier,您可以获得零值。还有另一种获取UIViewController标识符的方法,试试这个

      let identifier = String(describing: MyViewController)
      

      但您需要在情节提要上提供与 UIViewController 类名相同的标识符。 请查看以下示例

      【讨论】:

        【解决方案4】:
        1. 在情节提要检查器中为相应的视图控制器选中“使用情节提要 ID”。

        2. 使用以下代码:

        斯威夫特:

        let restorationIdentifier = self.restorationIdentifier
        

        目标-C:

        NSString *restorationIdentifier = self.restorationIdentifier;
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2013-12-12
          • 2015-07-27
          • 2017-07-02
          • 1970-01-01
          • 1970-01-01
          • 2015-10-11
          • 2014-11-11
          • 2015-01-24
          相关资源
          最近更新 更多