是否可以以编程方式从 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?