当用户点击srlv $t6,$t6,$t3
时,我需要以编程方式打开url
,但不需要segue到cell
。现场需要进行统计。
这需要模仿Safari browser
我做:
post request
但是这个开放UIApplication.shared.openURL(URL(string: url)!)
。
答案 0 :(得分:0)
如果我没有误会,你想在自己的应用程序中打开URL(无需导航到外部-Safari-浏览器)。好吧,如果是这样,你应该使用UIWebView:
您可以使用UIWebView类在您的应用中嵌入Web内容。至 这样做,创建一个UIWebView对象,将其附加到窗口,然后发送它 请求加载Web内容。您也可以使用此类返回 并且在网页的历史上前进,你甚至可以设置一些网络 内容属性以编程方式。
<强> WebViewController:强>
我建议将UIWebView添加到ViewController(称为WebViewController)中,并在需要时显示ViewController;故事板上的ViewController应该如下所示:
不要忘记为其分配一个故事板ID。
ViewController:
class WebViewController: UIViewController {
@IBOutlet weak private var webVIew: UIWebView!
var urlString: String?
override func viewDidLoad() {
if let unwrappedUrlString = urlString {
let urlRequest = URLRequest(url: URL(string: unwrappedUrlString)!)
webVIew.loadRequest(urlRequest)
}
}
@IBAction private func donePressed(_ sender: Any) {
dismiss(animated: true, completion: nil)
}
}
<强>用法:强>
当用户点击另一个ViewController中的按钮时,请考虑使用它:
class ViewController: UIViewController {
@IBAction private func donePressed(_ sender: Any) {
let stoyrboard = UIStoryboard(name: "Main", bundle: nil)
// withIdentifier: the used storyboard ID:
let webViewController = stoyrboard.instantiateViewController(withIdentifier: "WebViewController") as! WebViewController
webViewController.urlString = "https://www.google.com/"
}
}
或特别针对您的情况(选择单元格):
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
// withIdentifier: the used storyboard ID:
let webViewController = stoyrboard.instantiateViewController(withIdentifier: "WebViewController") as! WebViewController
webViewController.urlString = "URL GOES HERE..."
}
希望这会有所帮助。
答案 1 :(得分:0)
如果您的问题确实意味着您在外部网站上有一些您需要访问的数据,以便您可以从中提取一条信息,那么您可能不需要在以下位置显示已呈现的网页所有
您可以像这样提取页面的html内容
var text = ""
let url = URL(string: "https://www.bbc.co.uk")
do
{
text = try String(contentsOf: url!, encoding: String.Encoding.utf8)
}
catch
{
print("error \(error.localizedDescription)")
}
if !text.isEmpty
{
parseThisPageSomehow(text)
}
你如何解析文本取决于你需要从中得到什么,但这种方法将为你提供所需的数据。
如果您使用http
而不是https
,则会遇到记录良好的传输安全问题,这会导致您为http设置临时覆盖,或者开始使用https < / p>