我有一个应用程序,当第一个屏幕上按下按钮时,有些工作并生成一个URL,然后
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:currentURL]];
使用我的网址启动Safari。我希望从这里启动webview,以便用户可以使用它做一些自定义的事情。我仍然有一段时间了解iOS中的MVC并需要帮助。我的项目是最小的,包含一个AppDelegate.h / m和一个ViewController.h / m,视图控制器的.m是执行此Safari启动的函数所在。
任何人都可以帮我理解如何做我想做的事吗?
...谢谢
答案 0 :(得分:27)
最简单的方法是在按下按钮时添加UIWebView。将此方法添加到ViewController.m中,并在按下按钮时执行此操作。
编程:
//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];
}
使用Interface Builder:
1)在界面中添加UIWebView对象。
2)将“hidden”属性设置为选中(在Interface Builder的“Attributes Inspector”窗口中)。在你想要展示它之前,你会把它隐藏起来。
3)将以下代码添加到ViewController.h中,位于其他@property行下面:
@property (nonatomic, retain) IBOutlet UIWebView *webView;
4)在ViewController.m
中的@synthesize下面添加以下行@synthesize webView;
在dealloc方法中添加[webView release];
。
5)返回IB并单击File's Owner,并将webView插座连接到您创建的webView。
6)添加以下方法,而不是上面显示的方法(对于编程示例):
//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;
}
您可以设置一个IBAction方法来响应按下按钮,但听起来您已按下按钮按下,所以我现在不打扰它。
至于在Web视图上方添加一个按钮,您既可以将Web视图子类化并在那里添加按钮,也可以只在您的笔尖中定义一个单独的按钮或以编程方式定义该按钮并将其隐藏为“去掉”它”。
答案 1 :(得分:1)
要使用Swift将UIWebView添加到您的应用程序,只需将WebView拖到故事板上,然后使用助理编辑器将WebView连接到ViewController.swift 然后将URL加载到WebView非常简单。只需在故事板中创建一个WebView,然后就可以使用以下代码加载URL。
let url = NSURL (string: "https://www.simplifiedios.net");
let request = NSURLRequest(URL: url!);
webView.loadRequest(request);
简单到只有3行代码:)
答案 2 :(得分:0)
由于这是Google上的最佳结果,如果您可以使用WKWebView
代替UIWebView
,那么您应该这样做。
import WebKit
let webViewConfiguration = WKWebViewConfiguration()
let webView = WKWebView(frame: CGRect(), configuration: webViewConfiguration)