如何通过UITableViewCell打开URL

时间:2016-11-19 07:22:06

标签: ios swift uitableview swift3 tableviewcell

我有一个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) {
    }

}

4 个答案:

答案 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