以编程方式获取故事板ID?

Jal*_*koo 71 xcode identity objective-c storyboard ios

试图查看UIViewController或UIView是否可以识别其Storyboard ID.所以希望:

UIViewController *aViewController;
NSString *storyboardID = aViewController.storyboard.id;  //not an actual property
Run Code Online (Sandbox Code Playgroud)

要么:

NSString *storyboardID = [aViewController.storyboard valueForKey:@"storyboardId"];  //also not a working call
Run Code Online (Sandbox Code Playgroud)

但没有快乐,也无法在网上找到类似的解决方案.有谁知道这是否可能?

Lol*_*z89 91

您可以使用restorationIdentifier,它位于Storyboard标识符的正上方,它是一个UIViewController属性.

  • 只需勾选"界面"构建器中的"使用故事板ID",即可自动将故事板ID用作restorationIdentifier属性.它将动态设置,无需您输入两次. (6认同)
  • [参考restoreIdentifier](https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIViewController_Class/index.html#//apple_ref/occ/instp/UIViewController/restorationIdentifier)说`这个的价值默认情况下,属性为nil,表示不需要保存视图的状态.这意味着将restorationIdentifier设置为nil以外的某种副作用! (3认同)

小智 57

您可以使用恢复ID:

NSString *restorationId = self.restorationIdentifier;
Run Code Online (Sandbox Code Playgroud)

只需选中"使用故事板ID"复选框

  • 我得到了零 (2认同)

Lom*_*baX 21

故事板ID仅用于从故事板中查找和实例化VC.如UIStoryboard参考中所述:

"此标识符不是视图控制器对象本身的属性,仅供故事板文件用于定位视图控制器."

你为什么需要它?


App*_*304 10

您也可以尝试这样的事情: -

NSString *storyboardId = [viewController valueForKey:@"storyboardIdentifier"];
Run Code Online (Sandbox Code Playgroud)

这将精确地为您提供通过界面构建​​器设置的Storyboard Id.