2014-09-20 8 views
-3

j'ai créé une propriété dans mon fichier SecondViewController.h en utilisantUtilisation d'identificateur non déclaré - Xcode

@property (weak, nonatomic) IBOutlet UIWebView *webView; 

Et puis synthétisée dans le fichier .m correspondant à l'aide

@property (weak, nonatomic) IBOutlet UIWebView *webView; 

J'ai ensuite créé un fonction pour créer une page Web en utilisant une chaîne que l'utilisateur pourrait lancer comme argument. La fonction:

void createWebpage(NSString *webString) { 
NSURL *url = [NSURL URLWithString:webString]; 
NSURLRequest *requestUrl = [NSURLRequest requestWithURL:url]; 
[webView loadRequest:requestUrl]; 
} 

Et où il s'appelle.

- (void)viewDidLoad { 

createWebpage(@"http://www.google.com"); 

[super viewDidLoad]; 
// Do any additional setup after loading the view, typically from a nib. 
} 

Cependant, dans la dernière ligne de la fonction, [webView loadRequest:requestUrl];, webView produit l'erreur « Utilisation d'identificateur non déclaré" WebView. Pourquoi est-ce, et comment puis-je résoudre ce problème? Toute aide appréciée.

+1

attendre downvotes ... Vous n'êtes pas familier avec les bases VERY - propriétés, méthodes d'instance et ainsi de suite ... Ce – Injectios

Répondre

1

vous déclarez une propriété qui est disponible dans un objet, mais vous déclarez une méthode simple C:..

void createWebpage(NSString *webString) { 
NSURL *url = [NSURL URLWithString:webString]; 
NSURLRequest *requestUrl = [NSURLRequest requestWithURL:url]; 
[webView loadRequest:requestUrl]; 
} 

Cette méthode sera exécutée dans un « contexte global », mais pas sur l'objet Ainsi, vous pouvez N'accède pas aux propriétés des objets

Au lieu d'utiliser une méthode:

- (void) createWebpage:(NSString *)webString { 
    NSURL *url = [NSURL URLWithString:webString]; 
    NSURLRequest *requestUrl = [NSURLRequest requestWithURL:url]; 
    [self.webView loadRequest:requestUrl]; 
} 

Et vous devez utiliser self pour faire référence à l'objet en cours lorsque vous accédez à une propriété.

Vous pouvez appeler cette méthode:

[self createWebpage:@"http://www.google.com"]; 

Je recommande vraiment de lire ceci: https://developer.apple.com/library/mac/documentation/cocoa/conceptual/ProgrammingWithObjectiveC/Introduction/Introduction.html

+0

a fonctionné! Merci ami :) –

+0

@ Isaac'Criterion'Akalanne Je suis content de pouvoir vous aider. Peut-être que vous voulez accepter ma réponse. – idmean

0

void createWebpage n'est pas une méthode d'instance, de sorte que les variables d'instance (par exemple webView) ne être accessible à partir de là.
Vous devez déclarer la méthode comme: -(void)createWebpage:(NSString *)webString, et l'appeler comme [self createWebPage:@"http://www.google.com"];

Questions connexes