2011-03-23 22 views
15

Tengo una aplicación en el momento en que, cuando se pulsa un botón en la primera pantalla hace algún trabajo y hace una URL, y luego hace¿Cómo agrego un UIWebView a mi aplicación iOS?

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:currentURL]]; 

que se lanza Safari con mi URL. En su lugar, quiero tener un lanzamiento de la vista web desde aquí para que el usuario pueda hacer algunas cosas personalizadas con él. Todavía estoy teniendo un infierno de entender MVC en iOS y necesito ayuda. Mi proyecto es mínimo y consiste en un AppDelegate.h/my un ViewController.h/m, el .m del controlador de vista es donde vive la función que hace que este Safari se inicie.

¿Alguien puede ayudarme a entender cómo hacer lo que estoy tratando de hacer?

Gracias ...

Respuesta

27

La forma más sencilla es añadir un UIWebView cuando el botón se presiona. Agregue este método a su ViewController.m y haga que esto se realice cuando se presione el botón.

programación:

//This method should get called when you want to add and load the web view 
- (void)loadUIWebView 
{ 
    UIWebView *webView = [[UIWebView alloc] initWithFrame:self.view.bounds]; //Change self.view.bounds to a smaller CGRect if you don't want it to take up the whole screen 
    [webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:currentURL]]]; 
    [self.view addSubview:webView]; 
    [webView release]; 
} 

Usando Interface Builder:

1) Añadir un objeto UIWebView a su interfaz.

2) Establezca la propiedad "oculta" para marcar (en la ventana "Inspector de atributos" en el Creador de interfaces). Lo mantendrás oculto hasta que quieras mostrarlo.

3) Agregue el código siguiente a su ViewController.h, por debajo de las otras líneas @property:

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

4) Añadir la siguiente línea debajo de la @synthesize en su ViewController.m

@synthesize webView; 

Y agregue [webView release]; en el método dealloc.

5) Regrese a IB y haga clic en Propietario de archivo, y conecte la salida webView a la vista web que ha creado.

6) Añadir el siguiente método en lugar del método he mostrado antes (por ejemplo programática):

//This method should get called when you want to add and load the web view 
- (void)loadUIWebView 
{ 
    [self.webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:currentURL]]]; 
    self.webView.hidden = NO; 
} 

Usted podría crear un método IBAction para responder al botón de prensa, pero parece que usted Ya tengo el botón presionado funcionando, así que no me molestaría con eso ahora.

En cuanto a agregar un botón sobre la vista web, puede subclasificar la vista web y agregar el botón allí, o simplemente tener un botón separado que defina en su plumilla o programáticamente y que oculte la vista web para "deshacerse" de eso ".

+0

No sé cómo responder a su pregunta IB ... I tienen uno. No sé si lo estoy usando o qué. Y actualmente tengo mi función conectada a mi botón en ViewController.m y no puedo darla self.bounds, dice que no se encuentra en el objeto de mi tipo, tampoco puedo hacer la llamada self addSubView para razones similares ... – cdietschrun

+0

Bien, lo siento, he actualizado el código. – Ned

+0

Gracias. Eso definitivamente funciona 2 preguntas: si quiero hacer algún ajuste con WebView antes de lanzar el enlace, ¿supongo que es posible aquí? Por ejemplo, si quiero alguna manera de hacerlo como el estilo de Twitter donde hago clic en un enlace, y en la parte superior hay un botón para volver, pero el resto es solo una vista web. Y en segundo lugar, un amigo dice que 'recomienda que cambie a IB y propiedades' para esto ... ¿Alguna idea de lo que eso significa o cómo podría hacerlo? Gracias por la ayuda – cdietschrun

1

Para agregar UIWebView usando Swift a su aplicación, simplemente arrastre WebView a su panel de historia y luego use un editor asistente para conectar WebView a ViewController.swift Y luego, cargar URL a WebView es muy fácil. Simplemente crea una vista web en tu guión gráfico y luego puedes usar el siguiente código para cargar la url.

let url = NSURL (string: "https://www.simplifiedios.net"); 
    let request = NSURLRequest(URL: url!); 
    webView.loadRequest(request); 

tan simple como eso sólo 3 líneas de código :)

Ref: UIWebView Example

0

Dado que este es el primer resultado en Google, si se puede utilizar en lugar de WKWebViewUIWebView, debería hacerlo.

import WebKit 

let webViewConfiguration = WKWebViewConfiguration() 
let webView = WKWebView(frame: CGRect(), configuration: configuration) 
Cuestiones relacionadas