是否可以以编程方式从 Swift/Objective-C 中的 UIViewController 或 Storyboard 中获取基本 UIViewController 的标识符?

Posted

技术标签:

【中文标题】是否可以以编程方式从 Swift/Objective-C 中的 UIViewController 或 Storyboard 中获取基本 UIViewController 的标识符?【英文标题】:Is it possible to programmatically get the identifier of a basic UIViewController from an UIViewController or Storyboard in Swift/Objective-C? 【发布时间】: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。

提前感谢您的回答。

【问题讨论】:

【参考方案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】:

    在情节提要检查器中为相应的视图控制器选中“使用情节提要 ID”。

    使用以下代码:

斯威夫特:

let restorationIdentifier = self.restorationIdentifier

目标-C:

NSString *restorationIdentifier = self.restorationIdentifier;

【讨论】:

以上是关于是否可以以编程方式从 Swift/Objective-C 中的 UIViewController 或 Storyboard 中获取基本 UIViewController 的标识符?的主要内容,如果未能解决你的问题,请参考以下文章

是否可以从服务本身以编程方式重新启动 Windows 服务?还是我应该选择其他方法? [复制]

是否可以在 gmail.com 帐户中找到从 C# 以编程方式发送的电子邮件?

是否可以以编程方式从 Swift/Objective-C 中的 UIViewController 或 Storyboard 中获取基本 UIViewController 的标识符?

是否可以在 iPhone Setting Bundle 中以编程方式添加 UISwitch?

是否可以通过 Chrome 以编程方式创建虚拟 MIDI 设备?

是否可以以编程方式更改 GWT RPC servlet 路径?