uitableviewcell 在点击 swift 时打开 url

Posted

技术标签:

【中文标题】uitableviewcell 在点击 swift 时打开 url【英文标题】:tableviewcell open url on click swift 【发布时间】:2016-05-14 20:21:43 【问题描述】:

当我以编程方式单击我的 tableview 中的单元格时,我一直在尝试打开一个 url,而不必制作 webview 控制器并弄乱序列。关于如何完成这项工作的任何帮助。下面是我试过的代码

    override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) 



    if indexPath.row == 0 
        NSURL(string: "App Store Link")!
    
    else if indexPath.row == 1 
        NSURL(string: "Send Us Feedback - Contact On Website")!
      else if indexPath.row == 2 
        NSURL(string: "https://www.instagram.com/prs_app/")!
      else if indexPath.row == 3 
        NSURL(string: "Snapchat")!
    


感谢您的帮助。谢谢

【问题讨论】:

【参考方案1】:

你正在寻找

UIApplication.sharedApplication().openURL(NSURL(string: "http://www.example.com")!)

这将为您打开 Safari 浏览器

编辑评论中的问题解释最好添加枚举或其他常量,但这样做可以:

override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) 
    let url : NSURL?

    switch indexPath.section
    case 0:
        switch indexPath.row
        case 0:
            url = NSURL(string: "http://section0.row0.com")
        case 1:
            url = NSURL(string: "http://section0.row1.com")
        default:
            return;
        

    case 1:
        switch indexPath.row
        case 0:
            url = NSURL(string: "http://section1.row0.com")
        case 1:
            url = NSURL(string: "http://section1.row1.com")
        default:
            return;
        
    default:
        return;
    

    if url != nil
        UIApplication.sharedApplication().openURL(url!)
    

【讨论】:

我试过了,它可以工作,但是在更改每个单元格的 url 的情况下,它只会转到单元格的第一个链接(0 - apple.com)。有没有办法让每个单元格转到不同的链接? ' if indexPath.row == 0 UIApplication.sharedApplication().openURL(NSURL(string: "apple.com")!) else if indexPath.row == 1 UIApplication.sharedApplication(). openURL(NSURL(string: "apple.com")!) else if indexPath.row == 2 UIApplication.sharedApplication().openURL(NSURL(string: "instagram.com/prs_app")!) else if indexPath.row == 3 UIApplication. sharedApplication().openURL(NSURL(string: "snapchat.com")!) ' 好吧,你确定你点击的是正确的单元格吗?或者你确定你没有与行和部分混淆?因为如果你的 UITableView 上有 4 行,你的代码应该可以工作(但是有更清晰的方法来编写它) 我的表格视图中有两个部分。 @NateGrant 好的,那么您还应该检查您的indexPath.section 而不仅仅是indexPath.row【参考方案2】:

我有其他解决方案,希望它有效

覆盖 func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath)

    let link = sectionContent[indexPath.section][indexPath.row].link

    switch indexPath.section 
    // Leave us feedback section
//You can add as many sections you want.

    case 0:
        if let url = URL(string: link) 
            let safariController = SFSafariViewController(url: url)
            present(safariController, animated: true, completion: nil)
        

    // Follow us section
    case 1:
        if let url = URL(string: link) 
            let safariController = SFSafariViewController(url: url)
            present(safariController, animated: true, completion: nil)
        

     default:
         break
     

     tableView.deselectRow(at: indexPath, animated: false)
 

【讨论】:

以上是关于uitableviewcell 在点击 swift 时打开 url的主要内容,如果未能解决你的问题,请参考以下文章

如何在 swift 中使自定义 UITableViewCell 中的链接可点击

Swift:点击一个单元格时更改所有 UITableViewCells 的文本颜色

当 UIStepper 在 Swift 4 中以编程方式点击时如何更改 UILabel 的文本,如果它们都在 UITableViewCell 中?

如何从 swift 中的按钮选项中删除 uitableviewcell?

Swift 春季动画在 UITableViewCell 上无法正常工作

Swift:如何防止未显示的 UITableViewCells 在滚动时被关闭