以编程方式获取故事板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 --- }