尝试查看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
但没有快乐,也无法在网上找到类似的解决方案。有谁知道这是否可能?
答案 0 :(得分:90)
您可以使用restorationIdentifier,它位于Storyboard标识符的正上方,它是一个UIViewController属性。
答案 1 :(得分:57)
您可以使用恢复ID:
NSString *restorationId = self.restorationIdentifier;
只需选中“使用故事板ID”复选框
答案 2 :(得分:21)
故事板ID仅用于从故事板中查找和实例化VC。 如UIStoryboard参考文献所述:
“此标识符不是视图控制器对象本身的属性,仅供故事板文件用于查找视图控制器。”
为什么需要它?
答案 3 :(得分:5)
您也可以尝试这样做: -
NSString *restorationId = [viewController valueForKey:@"storyboardIdentifier"];
这将准确地为您提供通过界面构建器设置的Storyboard ID。
答案 4 :(得分:1)
返回" id"最可靠的方法UIViewController或UIView是......
NSString *viewControllerName = [[NSString alloc] initWithString:viewController.nibName];
这将返回......" 29w-Ic-LNo-view-FDu-oq-UpZ",其中" 29w-Ic-LNo"是UIViewController的对象ID和" FDu-oq-UpZ"是UIView的对象ID。
但是,您也可以使用......
NSString *viewControllerName = [[NSString alloc] initWithString:viewController.title];
这将返回"标题"属性检查器中的UIViewController;所以就像你将故事板ID添加到UIViewController一样容易,你也可以添加一个标题。
答案 5 :(得分:0)
您可以与班级名称进行比较。 导入类然后尝试。
NSArray *viewControllers = self.navigationController.viewControllers;
UIViewController *root = [viewControllers objectAtIndex:0];
if ([root isKindOfClass:[UserLogin class]]) {
//--- do ---
}