Es wird versucht festzustellen, ob ein UIViewController oder UIView seine Storyboard-ID identifizieren kann. Also hoffte auf:
UIViewController *aViewController;
NSString *storyboardID = aViewController.storyboard.id; //not an actual property
oder:
NSString *storyboardID = [aViewController.storyboard valueForKey:@"storyboardId"]; //also not a working call
Aber keine Freude und konnte online keine ähnliche Lösung finden. Weiß jemand, ob das überhaupt möglich ist?
ios
objective-c
xcode
storyboard
identity
Jalakoo
quelle
quelle
storyboardIdentifier
.storyboardIdentifier
langer Zeit. Ich habe keine Ahnung, ob es noch verfügbar ist, aber Sie können versuchen, es mit abzufragenvalueForKey
.Antworten:
Sie können den restoreIdentifier verwenden, der sich direkt über dem Storyboard-Bezeichner befindet und eine UIViewController-Eigenschaft ist.
quelle
The value of this property is nil by default, which indicates that the view’s state does not need to be saved
. Dies bedeutet, dass die Einstellung von recoveryIdentifier auf einen anderen Wert als Null keine Nebenwirkungen hat!Sie können die Wiederherstellungs-ID verwenden:
NSString *restorationId = self.restorationIdentifier;
Aktivieren Sie einfach das Kontrollkästchen "Storyboard-ID verwenden".
quelle
Die Storyboard-ID dient nur dazu, eine VC aus einem Storyboard zu finden und zu instanziieren. Wie in der UIStoryboard-Referenz geschrieben:
"Diese Kennung ist keine Eigenschaft des View Controller-Objekts selbst und wird nur von der Storyboard-Datei zum Auffinden des View Controllers verwendet."
Wieso brauchst du es?
quelle
Sie können auch Folgendes versuchen: -
NSString *storyboardId = [viewController valueForKey:@"storyboardIdentifier"];
Dadurch erhalten Sie genau die Storyboard-ID, die Sie über den Interface Builder festgelegt haben.
Schnelle Erweiterung:
extension UIViewController { var storyboardId: String { return value(forKey: "storyboardIdentifier") as? String } }
quelle
Die zuverlässigste Methode zur Rückgabe der "ID" des UIViewController oder UIView ist ...
NSString *viewControllerName = [[NSString alloc] initWithString:viewController.nibName];
Dies wird zurückgeben ... "29w-Ic-LNo-Ansicht-FDu-oq-UpZ", wobei "29w-Ic-LNo" die Objekt-ID des UIViewControllers und "FDu-oq-UpZ" die Objekt-ID von ist die UIView.
Sie können jedoch auch ...
NSString *viewControllerName = [[NSString alloc] initWithString:viewController.title];
Dadurch wird der "Titel" des UIViewControllers im Attributinspektor zurückgegeben. So einfach wie Sie die Storyboard-ID zum UIViewController hinzugefügt haben, können Sie auch einen Titel hinzufügen.
quelle
Sie können mit dem Klassennamen vergleichen. Klasse importieren und dann versuchen.
NSArray *viewControllers = self.navigationController.viewControllers; UIViewController *root = [viewControllers objectAtIndex:0]; if ([root isKindOfClass:[UserLogin class]]) { //--- do --- }
quelle