Comment obtenir le nom de classe de UIViewController
Class à 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 ça
let appDelegate = UIApplication.sharedApplication().delegate as AppDelegate
let last_screen = appDelegate.popScreens?.lastObject as UIViewController
je ne peux pas faire ça.
if last_screen.class != self.navigationController.visibleViewController.class{
//....
}
pas de méthode de classe de UIViewController
c'est-à-dire le dernier écran
Pour connaître le nom de votre classe, vous pouvez appeler quelque chose comme ceci:
var className = NSStringFromClass(yourClass.classForCoder)
Un moyen simple dans Swift 3 consiste à écrire le code ci-dessous:
par exemple:
let className = String(describing: self)
pour les cours:
let className = String(describing: YourViewController.self)
La manière la plus propre sans avoir besoin de connaître le nom de votre classe est la suivante.
let name = String(describing: type(of: self))
En développant juangdelvalle réponse .
J'ai ajouté cela en tant qu'extension, de sorte qu'il soit réutilisable et qu'il soit plus facile d'appeler depuis n'importe quel contrôleur de vue. De plus, dans certains cas, NSStringFromClass
dans Swift renvoie une chaîne au format suivant:
<nom du projet> .viewControllerClassName.
Cette propriété d'extension est modifiée pour supprimer le préfixe du nom de projet et ne renvoyer que le nom de la classe.
extension UIViewController {
var className: String {
return NSStringFromClass(self.classForCoder).componentsSeparatedByString(".").last!
}
}
Voici une version Swift3 de la réponse d’isuru.
extension UIViewController {
var className: String {
return NSStringFromClass(self.classForCoder).components(separatedBy: ".").last!;
}
}
Swift 4
Supposons que nous ayons classe avec le nom HomeViewController
. Ensuite, vous pouvez obtenir le nom de la classe avec le code suivant:
let class_name = "\(HomeViewController.classForCoder())"
La méthode classForCoder()
renvoie l'objet AnyClass
(nom de votre classe) que nous convertissons en chaîne pour l'utilisateur.
La propriété s'appelle dynamicType
dans Swift.
Utilisez String.init(describing: self.classForCoder)
exemple:
let viewControllerName = String.init(describing: self.classForCoder)
print("ViewController Name: \(viewControllerName)")