2011-01-18 12 views
5

He creado una nueva aplicación para Mac OSX en Xcode, incluida una WebView a través de Interface Builder y ahora estoy tratando de decirle programáticamente qué URL cargar. Así es como el momento me dio:¿Cómo establecer programáticamente la URL de una WebView en un proyecto OSX Xcode?

  • crear el proyecto
  • Incluir Webkit.framework
  • Incluir la vista Web en el Interface Builder

Luego, desde allí he incluido lo que creo que es necesario obtener acceso a la vista Web, incluyendo:

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

Cuando me caigo más es conseguir el acceso a la vista Web se auto y diciéndole qué URL cargar. Lo estoy intentando:

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

¿Pero creo que se supone que debo conectar algunas cosas primero en Interface Builder?

Mi objetivo final es crear una aplicación Mac OSX que sea esencialmente una aplicación basada en visualización (que es simple de usar con el SDK de iPhone). Desde allí quiero incluir una carpeta local htdocs con mis propios archivos locales .html, pero el primer paso es decirle a WebView qué URL cargar :)

¡Gracias!

+2

¿Y cómo se relaciona esto con Xcode? –

+0

Eche un vistazo a mi tutorial aquí: [http://vexis.co.uk/blog/2012/08/03/creating-an-xcode-browser-app/](http://vexis.co.uk/blog/2012/08/03/creating-an-xcode-browser-app /) – Seb123

Respuesta

0

¿Declaraste tu propiedad webView como IBOutlet y la conectaste a tu WebView en Interface Builder?

Si no, entonces webView no está configurado y su código simplemente no podrá hacer nada.

3

El código que ha escrito arriba es correcto, simplemente lo probé y cargué con éxito una URL.

no estoy seguro de lo que se ha declarado en el archivo de cabecera pero debe tener algo como esto:

//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 

Como @pulazzo dice, también es necesario para conectar el código con el control definido en Interface Builder.
Para hacer esto, en Interface Builder, necesita encontrar la clase de delegado de su aplicación, haga clic derecho (o control-clic) en él y busque myWebView en la lista de puntos de venta. Arrastre desde el círculo en la misma línea que myWebView en su vista web. No creo que mi explicación sea mucha, así que probablemente tengas mucha más suerte leyendo Interface Builder Quick Start Guide en el sitio para desarrolladores de Apple.

En su archivo de implementación, debe implementar los métodos getter y setter para su nueva propiedad, myWebView. Usted (probablemente) no es necesario hacer ninguna personalización para esto por lo que sólo puede utilizar @synthesize:

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

sí, se dice bien! declaró así:

IBOutlet WebView webView; 

pero no necesita codificación necesaria con @sinthesize, sólo puede utilizar un método awakeFromNib en su aplicación AppControler.

-(void)awakeFromNib{ 
    //etc etc 
} 
Cuestiones relacionadas