2010-02-24 7 views
0

Quand je lance mon application, il affiche un message d'avertissement:iPhone: - [UIView presentModalViewController: animation] Erreur d'argument

warning:passing argument 1 of 'presentModalViewController:animated' 
from distinct objective - c type 

Comment puis-je résoudre cet avertissement? J'ai utilisé presentModalViewController:animated plusieurs fois précédemment dans mon application.

S'il vous plaît aidez-moi.

Merci à l'avance

Répondre

0

Votre problème est que vous avez défini le contrôleur de vue vous passez comme:

UIViewController myViewController=... // <= you've defined it as the struct that defines a class 

(notez l'astérisque manquant) au lieu de:

UIViewController *myViewController=... // <= defined as a pointer to the memory address of an instance. 
+0

Vous ne pouvez pas avoir une variable de type UIViewController dans le dialecte d'Objective-C d'Apple - la déclaration elle-même est une erreur. – Chuck

+0

@Chuck, Hmmm, cela fonctionne: 'UIViewController * myViewController = [[UIViewController alloc] initWithNibName: @" aNibName "bundle: [NSBundle mainBundle];' ou vouliez-vous dire quelque chose d'autre? – TechZen

+1

Oui, je voulais dire une variable de type 'UIViewController' plutôt que' UIViewController * '- notez l'astérisque manquant - comme vous l'aviez suggéré Rajendra. Vous n'obtiendrez pas d'avertissement de type Objective-C, vous obtiendrez une erreur indiquant que les objets de la pile sont illégaux. – Chuck

2

Cette méthode s'y attend son premier argument pour être de type UIViewController *. Ce qui se passe probablement, c'est que vous transmettez le mauvais objet à cette méthode ou que vous n'avez pas importé le fichier d'en-tête de vos contrôleurs de vue personnalisés dans le fichier dans lequel vous appelez cette méthode.