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

尝试查看UIViewController或UIView是否可以识别它的Storyboard ID。 所以希望:

UIViewController *aViewController; NSString *storyboardID = aViewController.storyboard.id; //not an actual property 

要么:

  NSString *storyboardID = [aViewController.storyboard valueForKey:@"storyboardId"]; //also not a working call 

但没有喜悦,也找不到类似的在线解决scheme。 有谁知道这是甚至可能吗?

您可以使用restoreIdentifier,它正好在故事板标识符的上方,它是一个UIViewController属性。

您可以使用恢复ID:

 NSString *restorationId = self.restorationIdentifier; 

只需选中“使用故事板ID”checkbox

故事板ID仅用于从故事板查找和实例化VC。 正如UIStoryboard参考文献所写:

“这个标识符不是视图控制器对象本身的属性,只能由故事板文件来定位视图控制器。

你为什么需要它?

你也可以尝试做这样的事情:

 NSString *restorationId = [viewController valueForKey:@"storyboardIdentifier"]; 

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

返回UIViewController或UIView的“id”最可靠的方法是…

 NSString *viewControllerName = [[NSString alloc] initWithString:viewController.nibName]; 

这将返回…“29w-Ic-LNo-view-FDu-oq-UpZ”,其中“29w-Ic-LNo”是UIViewController的对象ID,“FDu-oq-UpZ”是UIView。

不过,你也可以用…

 NSString *viewControllerName = [[NSString alloc] initWithString:viewController.title]; 

这将返回属性检查器中的UIViewController的“标题”; 所以就像您将故事板ID添加到UIViewController一样简单,您也可以添加一个标题。

你可以和class级名称比较。 导入类,然后尝试。

 NSArray *viewControllers = self.navigationController.viewControllers; UIViewController *root = [viewControllers objectAtIndex:0]; if ([root isKindOfClass:[UserLogin class]]) { //--- do --- }