2012-12-15 3 views
0

Bonjour Je travaille sur une application basée sur Web view, j'ai un WebController dans lequel j'ai une variable qui contient l'URL actuelle.Accéder à une variable dans ViewController

J'ai Code récemment ajouté à lancer une vue, cela fonctionne très bien, ce point de vue tient aussi une autre vue sur le Web, ce point de vue web fonctionne très bien si je charge un site dans ce comme celui-ci:

[[mywebview mainFrame] loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString: 
       [@"http://www.google.com/search?hl=en&q=" stringByAppendingString:@"test"]]]]; 

Cependant Je suis en train d'accéder à la variable qui contient l'URL actuelle comme ceci:

[[mywebview mainFrame] loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString: 
       [@"http://www.google.com/search?hl=en&q=" stringByAppendingString:currentURL]]]]; 

Cependant lors de cette opération en liant au WebController le CURRENTURL semble égaler rien, mais cela fonctionne parfaitement bien quand il fait du premier répondeur (sauf bien sûr la vue pas longtemps er montre)

Ma question est comment puis-je faire fonctionner ma variable currentURL quand elle est liée à partir du WebController?

Je suis relativement nouveau au cacao donc je suis désolé si c'est une question facile!

EDIT: ajout de commentaires

Dans la méthode initWithWindowControllercurrentURL est réglé sur @"", et dealloc-nil. Le CURRENTURL vient de l'autre vue Web voir ici:

- (void)webView:(WebView *)wv didStartProvisionalLoadForFrame:(WebFrame *)frame { 
    if (frame != [self.webView mainFrame]) 
     return; 
    self.currentUrl = [[[[frame provisionalDataSource] request] URL] absoluteString]; 
    [self retain]; 
} 

Je déclare CURRENTURL dans le WebController.h

@interface WebController : NSObject <DOMEventListener> 
{ 
    IBOutlet NSString *currentURL; 
} 
@property (nonatomic, copy) IBOutlet NSString *currentURL; 
@end 

Je suis en train d'utiliser le CURRENTURL dans la WebController.m dans la fonction DisplayInView .

-(IBAction) DisplayInView:(id) sender 
{  
if ([siteview isInFullScreenMode])   
{     
    [siteview exitFullScreenModeWithOptions:nil];   
}  
else   
{     
    [[mywebview mainFrame] loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:    [@"google.com/search?hl=en&q="stringByAppendingString:currentURL]]]];    siteview enterFullScreenMode:[[siteview window] screen] withOptions:nil];   
} 
} 
@synthesize siteview; 
@end 
+0

Pouvez-vous indiquer où vous définissez var currentURL? – geraldWilliam

+1

Pour répondre à cette question, nous devons savoir comment vous déclarez 'currentURL' et comment vous lui attribuez une valeur. –

+0

Il est défini sur @ "" dans le initWithWindowController dans dealloc: currentURL = nil; Le CURRENTURL vient de l'autre point de vue web voir ici: - (void) webView: (WebView *) wv didStartProvisionalLoadForFrame: (Webframe *) cadre { si le retour; (frame = [de self.webView Mainframe]!) self.currentUrl = [[[[frame provisionalDataSource] request] URL] absoluteString]; [self retain]; } – user1887683

Répondre

0

Je ne sais pas si cela est votre problème ou une erreur de copier et coller, mais le code affiché est:

[@"google.com/search?hl=en&q="; stringByAppendingString:currentURL]]]]; 

Il a un point-virgule parasite au milieu. Cela ne devrait même pas compiler si.

+0

ce fut une erreur de frappe que je tapais sur un ordinateur séparé à l'endroit où le code a été. Il n'y a pas de point virgule perdu dans le code actuel et j'ai modifié le message. D'autres idées? – user1887683

+0

@ user1887683, est tout le code que vous affichez dans la classe WebController? Il n'est pas clair d'après votre message quelle vue Web est la première et quelle est la deuxième qui est dans l'autre vue. – rdelmar

+0

Oui, tout le code est dans la classe WebController et mywebview est l'affichage Web de la vue. – user1887683

Questions connexes