2011-01-18 4 views
5

Stworzyłem nową aplikację Mac OSX w Xcode, dołączono WebView przez Interface Builder, a teraz próbuję programowo powiedzieć, jaki adres URL załadować. Oto jak daleko mam:Jak programowo ustawić adres URL WebView w projekcie Xcode OSX?

  • Tworzenie projektu
  • Dołącz Webkit.framework
  • Dołącz WebView interfejs Builder

następnie stamtąd podaję, co moim zdaniem jest to konieczne do uzyskaj dostęp do WebView, w tym:

#import <WebKit/WebKit.h> 
@synthesize webView; 
// etc, I think this is all good 

Miejsce, w którym wpadam, uzyskuje dostęp do WebView samodzielnie i informując go, jaki adres URL załadować. Próbuję:

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification { 
    NSString *urlAddress = @"http://www.example.com/"; 
    NSURL *url = [NSURL URLWithString:urlAddress]; 
    NSURLRequest *requestObj = [NSURLRequest requestWithURL:url]; 
    [[webView mainFrame] loadRequest:requestObj]; 
} 

Ale myślę, że najpierw powinienem podłączyć pewne rzeczy w programie Interface Builder?

Moim celem końcowym jest stworzenie aplikacji Mac OSX, która jest w zasadzie tylko aplikacją opartą na widoku (co jest łatwe do zrobienia przy użyciu zestawu iPhone SDK). Stamtąd chcę dołączyć lokalny katalog htdocs z moimi lokalnymi plikami .html, ale pierwszym krokiem jest poinformowanie WebView, jaki adres URL załadować :)

Dzięki!

+2

A jak jest to związane z Xcode? –

+0

Zapoznaj się z moim tutorialem tutaj: [http://vexis.co.uk/blog/2012/08/03/creating-an-xcode-browser-app/](http://vexis.co.uk/blog/2012/08/03/creation-an-xcode-browser-app /) – Seb123

Odpowiedz

0

Czy zadeklarowałeś swoją właściwość webView jako IBOutlet i połączyłeś ją z WebView w Interface Builder?

Jeśli nie, to webView nie jest ustawiony, a twój kod po cichu nie zrobi niczego.

3

Powyższy kod jest poprawny, właśnie go przetestowałem i pomyślnie załadowałem adres URL.

Nie jestem pewien, co już zadeklarowane w pliku nagłówka, ale trzeba mieć coś takiego:

//usual #import(s) 
    #import <WebKit/WebKit.h> 

    @interface myAppDelegate : NSObject <NSApplicationDelegate> { 
     WebView *myWebView; 
     //other instance variables 
    } 

    @property (retain, nonatomic) IBOutlet WebView *myWebView; 
    //other properties and methods 
    @end 

Jak @pulazzo mówi, trzeba także połączyć swój kod z kontrolą określoną w Konstruktor interfejsów.
Aby to zrobić, w Kreatorze interfejsów należy znaleźć klasę delegatów aplikacji, kliknąć ją prawym przyciskiem myszy (lub kliknąć z naciśniętym klawiszem Control) i znaleźć myWebView na liście placówek. Przeciągnij z kręgu w tej samej linii, co myWebView na swój widok internetowy. Nie sądzę, że moje wyjaśnienie jest znacznie mniejsze, więc prawdopodobnie będziesz mieć więcej szczęścia czytając Interface Builder Quick Start Guide na stronie dla programistów Apple.

W pliku implementacyjnym należy zastosować metody pobierające i ustawiające dla nowej właściwości, myWebView. Ty (prawdopodobnie) nie trzeba wykonywać żadnych dostosowanie do tego tak można po prostu użyć @synthesize:

@implementation myAppDelegate 
@synthesize window; 
@synthesize myWebView; 
//your function etc 
@end 
0

tak, mówi prawo! oświadczył tak:

IBOutlet WebView webView; 

ale nie musi niezbędne kodowanie z @sinthesize, można po prostu użyć metody awakeFromNib w implementacji appController.

-(void)awakeFromNib{ 
    //etc etc 
}