我有一个UITableView
,有五个静态单元格。
我正在尝试这样做,当我点击其中一个单元格时,它会打开一个特定的URL。每个单元格都有自己唯一的URL。
我该怎么做?
使用Swift 3,Xcode。
谢谢!
代码:
import UIKit
import Kingfisher
class SettingsTableView: UITableViewController {
@IBAction func clearCache(_ sender: Any) {
ImageCache.default.clearMemoryCache()
ImageCache.default.clearDiskCache()
}
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
self.navigationController?.navigationBar.titleTextAttributes = [NSForegroundColorAttributeName: UIColor.white]
self.navigationController!.navigationBar.barTintColor = UIColor.black
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
override func viewWillAppear(_ animated: Bool) {
self.navigationController?.hidesBarsOnTap = false
}
override var prefersStatusBarHidden: Bool {
return true
}
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
}
}
答案 0 :(得分:3)
只需实施UITableViewDelegate
方法 didSelectRowAt
,然后打开网址数组中的网址,即UITableView
的相应选定行。
let urlArray = ["http://google.com", "https://apple.com"]
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath)
{
let urlString = self.urlArray[indexPath.row]
if let url = URL(string: urlString)
{
UIApplication.shared.openURL(url)
}
}
答案 1 :(得分:0)
假设您在自定义单元格类中有一个var urlToBeOpened : String
属性。
override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
let cell = tableView.cellForRowAtIndexPath(indexPath) as! CustomTableViewCell
let urlAsString = cell.urlToBeOpened
let url = URL(string : urlAsString)
UIApplication.sharedApplication().openURL(url)
}
确保网址编码的urlToBeOpened
字符串或URL(string : urlAsString)
将返回nil
答案 2 :(得分:0)
在didSelectRowAt indexPath
功能中,您必须拨打open
而不是openURL
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
let url = URL(string: self.urlArray[indexPath.row])!
UIApplication.shared.open(url, options: [:])
}
答案 3 :(得分:0)
使用类似
的链接声明一个全局数组(在类中)let links = ["http://google.com", "https://apple.com"]
然后在 didSelectRowAt 中打开链接
let link = links[indexPath.row]
if let url = URL(string: link){
UIApplication.shared.open(url, options: [:], completionHandler: nil)
} //else you entered an incorrect link