J'ai une application au moment où, lorsqu'un bouton est enfoncé sur le premier écran, il fonctionne et crée une URL, puis
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:currentURL]];
qui lance Safari avec mon URL. Je souhaite plutôt que la vue Web soit lancée à partir d'ici afin que l'utilisateur puisse personnaliser certaines choses. J'ai encore beaucoup de mal à comprendre MVC dans iOS et j'ai besoin d'aide. Mon projet est minimal et consiste en un AppDelegate.h/m et un ViewController.h/m, le m du contrôleur de vue est le lieu où la fonction qui effectue ce lancement de Safari réside.
Quelqu'un peut-il m'aider à comprendre comment faire ce que j'essaie de faire?
Merci...
Le moyen le plus simple consiste simplement à ajouter un UIWebView lorsque le bouton est enfoncé. Ajoutez cette méthode à votre ViewController.m et effectuez-la lorsque vous appuyez sur le bouton.
Par programme:
//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];
}
Utilisation d'Interface Builder:
1) Ajoutez un objet UIWebView à votre interface.
2) Définissez la propriété "masquée" sur cochée (dans la fenêtre "Inspecteur d'attributs" de Interface Builder). Vous le garderez caché jusqu'à ce que vous vouliez le montrer.
3) Ajoutez le code suivant à votre ViewController.h, sous les autres lignes @property:
@property (nonatomic, retain) IBOutlet UIWebView *webView;
4) Ajoutez la ligne suivante sous le @ synthèse dans votre ViewController.m
@synthesize webView;
Et ajoutez [webView release];
dans la méthode dealloc.
5) Retournez dans IB et cliquez sur Propriétaire du fichier, puis connectez la sortie webView à la webView que vous avez créée.
6) Ajoutez la méthode suivante à la place de la méthode indiquée ci-dessus (pour l'exemple de programmation):
//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;
}
Vous pouvez configurer une méthode IBAction pour répondre à la pression du bouton, mais il semble que vous avez déjà appuyé sur la touche, donc je ne m'embêterai pas avec cela maintenant.
En ce qui concerne l'ajout d'un bouton au-dessus de la vue Web, vous pouvez soit sous-classer la vue Web et y ajouter le bouton, soit simplement définir un bouton distinct dans votre nib ou par programme et le faire masquer à la vue Web pour "s'en débarrasser".
Pour ajouter UIWebView à l'aide de Swift à votre application, faites simplement glisser WebView sur votre story-board, puis utilisez un éditeur assistant pour connecter WebView à ViewController.Swift . Ensuite, le chargement d'URL vers WebView est très simple. Créez simplement une WebView dans votre storyboard et vous pourrez ensuite utiliser le code suivant pour charger l’URL.
let url = NSURL (string: "https://www.simplifiedios.net");
let request = NSURLRequest(URL: url!);
webView.loadRequest(request);
Aussi simple que cela, seulement 3 lignes de codes :)
Ref: Exemple UIWebView
Comme il s’agit du meilleur résultat sur Google, si vous pouvez utiliser WKWebView
au lieu de UIWebView
, vous devriez le faire.
import WebKit
let webViewConfiguration = WKWebViewConfiguration()
let webView = WKWebView(frame: CGRect(), configuration: webViewConfiguration)