想看看是否一个UIViewController或UIView的可识别它的故事板ID。 所以很希望:
UIViewController *aViewController;
NSString *storyboardID = aViewController.storyboard.id; //not an actual property
要么:
NSString *storyboardID = [aViewController.storyboard valueForKey:@"storyboardId"]; //also not a working call
但没有喜悦,无法在网上找到类似的解决方案。 有谁知道这是否可能?
您可以使用restorationIdentifier,这是正确的故事板标识上面,它是一个UIViewController属性。
你可以使用恢复ID:
NSString *restorationId = self.restorationIdentifier;
只需选中复选框“使用故事板ID”
故事板ID只是为了找到和故事板实例化一个VC。 至于写在UIStoryboard参考:
“这标识符不是视图控制器对象本身的属性,并且仅用于由所述故事板文件来定位视图控制器”。
你为什么需要它?
您也可以尝试做这样的事情: -
NSString *restorationId = [viewController valueForKey:@"storyboardIdentifier"];
这恰恰给你的故事板的ID您通过界面生成器设置。
为返回的的UIViewController或UIView的的“ID”最可靠的方法是...
NSString *viewControllerName = [[NSString alloc] initWithString:viewController.nibName];
这将返回...... “29瓦特集成电路(IC)LNO - 视图 - FDU-OQ-UPZ”,其中 “29瓦特集成电路(IC)LNO” 是的UIViewController的对象ID和 “FDU-OQ-UPZ” 是的对象ID UIView的。
但是,你也可以使用...
NSString *viewControllerName = [[NSString alloc] initWithString:viewController.title];
这将返回在属性检查器的UIViewController的“标题”; 所以很容易为你添加故事板ID到的UIViewController,你也可以添加标题。
您可以使用类名称进行比较。 进口类,然后尝试。
NSArray *viewControllers = self.navigationController.viewControllers;
UIViewController *root = [viewControllers objectAtIndex:0];
if ([root isKindOfClass:[UserLogin class]]) {
//--- do ---
}