Obtenir le nom de classe de UIViewController dans swift
Comment obtenir le nom de la classe de UIViewController
Classe swift
En Objective-C, nous pouvons faire quelque chose comme ceci :
self.appDelegate = (shAppDelegate *)[[UIApplication sharedApplication] delegate];
UIViewController *last_screen = self.appDelegate.popScreens.lastObject ;
if(last_screen.class != self.navigationController.visibleViewController.class){
//.......
}
mais dans swift, j'ai essayé comme ceci
let appDelegate = UIApplication.sharedApplication().delegate as AppDelegate
let last_screen = appDelegate.popScreens?.lastObject as UIViewController
ne peux pas faire cela.
if last_screen.class != self.navigationController.visibleViewController.class{
//....
}
pas de méthode de la classe de UIViewController
je.e dernier écran
source d'informationauteur Qadir Hussain
Vous devez vous connecter pour publier un commentaire.
Savoir votre nom de classe, vous pouvez appeler quelque chose comme ceci:
Expansion sur juangdelvalle de réponse.
J'ai ajouté cela comme une extension de sorte qu'il est réutilisable et plus facile d'appeler depuis n'importe quelle vue contrôleur. Aussi, dans certains cas,
NSStringFromClass
dans Swift retourne une chaîne de caractères dans le format comme ceci:< nom du projet >.viewControllerClassName.
Cette extension propriété est modifiée pour se débarrasser du projet de nom de préfixe et de ne renvoyer que le nom de la classe.
Un moyen simple rapide 3 est d'écrire le code ci-dessous:
pour les instances:
pour les classes:
La façon la plus propre sans avoir besoin de connaître le nom de votre classe, c'est comme cela.
Ici est un swift3 version de isuru de réponse.
Swift 4
/*
Supposons que nous avons la classe avec le nom "HomeViewController"
Ensuite, vous pouvez obtenir le nom de la classe avec le code suivant.
*/
laisser class_name = "(HomeViewController.classForCoder())"
/*
Le classForCoder() la méthode de retour AnyClass objet (nom de votre classe) qui nous convertir à chaîne pour l'utilisateur
*/
La propriété est appelé
dynamicType
en Swift.Utilisation
String.init(describing: self.classForCoder)
exemple: