Essayer de voir si un UIViewController ou UIView peut identifier son ID de storyboard. J'espérais donc:
UIViewController *aViewController;
NSString *storyboardID = aViewController.storyboard.id; //not an actual property
ou:
NSString *storyboardID = [aViewController.storyboard valueForKey:@"storyboardId"]; //also not a working call
Mais pas de joie et je n'ai pas pu trouver une solution similaire en ligne. Est-ce que quelqu'un sait si c'est même possible?
Vous pouvez utiliser la restaurationIdentifier, il est juste au-dessus de l'identifiant Storyboard et c'est une propriété UIViewController.
Vous pouvez utiliser l'ID de restauration:
NSString *restorationId = self.restorationIdentifier;
Cochez simplement la case "Utiliser l'ID du storyboard"
L'ID du storyboard est uniquement destiné à rechercher et instancier un VC à partir d'un storyboard. Comme écrit dans la référence UIStoryboard:
"Cet identifiant n'est pas une propriété de l'objet contrôleur de vue lui-même et n'est utilisé que par le fichier de storyboard pour localiser le contrôleur de vue."
Pourquoi en avez-vous besoin?
Vous pouvez également essayer de faire quelque chose comme ceci: -
NSString *restorationId = [viewController valueForKey:@"storyboardIdentifier"];
Cela vous donnera précisément l'ID du storyboard que vous avez défini via le générateur d'interface.
La méthode la plus fiable pour renvoyer l '"id" de UIViewController ou UIView est ...
NSString *viewControllerName = [[NSString alloc] initWithString:viewController.nibName];
Cela retournera ... "29w-Ic-LNo-view-FDu-oq-UpZ", où "29w-Ic-LNo" est l'ID d'objet de l'UIViewController et "FDu-oq-UpZ" est l'ID d'objet de l'UIView.
Cependant, vous pouvez également utiliser ...
NSString *viewControllerName = [[NSString alloc] initWithString:viewController.title];
Cela renverra le "Titre" de l'UIViewController dans l'inspecteur d'attributs; donc aussi facilement que vous avez ajouté l'ID de storyboard à l'UIViewController, vous pouvez également ajouter un titre.
Vous pouvez comparer avec le nom de la classe. importez la classe puis essayez.
NSArray *viewControllers = self.navigationController.viewControllers;
UIViewController *root = [viewControllers objectAtIndex:0];
if ([root isKindOfClass:[UserLogin class]]) {
//--- do ---
}