0

J'ai une application qui est un TabBarControllers avec 4 onglets. Maintenant, dans didFinishLaunchingWithOptions Je l'ai fait:Obtenir le nom du ViewController

UILongPressGestureRecognizer *lpgr = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(handleLongPress:)]; 
    lpgr.minimumPressDuration = 5.0; 
    lpgr.delegate = self; 
    [self.window addGestureRecognizer:lpgr]; 
    [lpgr release]; 

Cette partie travaille et long geste de presse est reconnu dans tous les quatre onglets. Maintenant, je veux passer le nom du ViewController actuel sur lequel l'utilisateur appuie actuellement afin que je puisse le passer dans ma fonction qui gère l'événement de presse longue.

Répondre

8

Vous pouvez essayer:

NSStringFromClass([YourViewController class]); 

et contrôleur de vue actuel, utilisez:

NSStringFromClass([self class]); 
+0

mais cela retournera uniquement la classe AppDelegate et non la classe ViewController. Je veux tout faire dans appDelegate au lieu de mettre NSStringFromClass ([self class]) dans chaque ViewController. – Diffy

+0

@Diffy Voir ci-dessous un ... !!!! – Kamarshad

+0

@Diffy vous pouvez créer une méthode publique (par exemple 'selectedViewControllerName:') pour chaque VC dans votre onglet VC, alors vous pouvez appeler la méthode du VC sélectionné pour obtenir le bon nom de VC. _ "Je veux tout faire dans l'appDelegate au lieu de mettre NSStringFromClass ([self class]) dans chaque ViewController" _, si c'est le cas, utilisez le premier, vous pouvez retourner le nom en vérifiant le TAG du VC sélectionné. – Kjuly

1

Vous devez passer un index (0-3) et une méthode qui vous renverra le contrôleur de l'index (ou placez les contrôleurs dans un tableau public).

4

Essayez ci-dessous un (Mise à jour)

AS vous dit que vous avez ajouté quatre ViewController sur le contrôleur TabBar.

Get The ViewController de TabBarController As:

UIViewController *current = tabBarController.selectedViewController; 

NSArray *controllerNameArray = [current childViewControllers]; 

NSLog (@ "className% @", [controllerNameArray objectAtIndex: 0]);

J'espère que ce vraiment utile pour vous ... !!!

+0

merci mais ça ne m'a pas vraiment donné ce que je voulais. J'ai reçu un indice de votre code, j'ai utilisé UIViewController * current = tabBarController.selectedViewController; NSArray * className = [childViewController actuel]; NSLog (@ "className% @", [className objectAtIndex: 0]); pour obtenir le nom de la classe. – Diffy

+0

@Diffy vous accueillir. C'est sympa ... !!!!! .Vous avez votre réponse. – Kamarshad