从CollectionViewCell中的UIButton打开URL

时间:2016-11-02 17:18:58

标签: ios swift uicollectionview

我的UIButton中有一个UICollectionViewCell,它从JSON获取数据。现在我需要从每个按钮打开一个URL(每个按钮都有一个不同的URL,也来自JSON)。

我设法用以下内容打开网址:

let weburl = "http://example.com"
UIApplication.shared.openURL(URL(string: weburl)!)

但现在我需要通过网址传递每个按钮。有关如何实现这一目标的任何想法?

2 个答案:

答案 0 :(得分:1)

您可以拥有一系列网址:

// waves hands vigorously
const TourComponent = (props) => {
  if (props.currentStep) return <TourStep ...props.currentStep />;
  return null;
}

然后将每个按钮的tag属性分配给其对应url的索引。现在您可以轻松管理您想要的内容:

let urls = [url1, url2, ...]

修改

其他解决方案是将url存储在单元格本身中,并在按钮处理程序中打开与其单元格对应的url。

答案 1 :(得分:0)

在iOS 10中不推荐使用FYI openURL。如果您需要支持旧版本的ios,我建议如下:

    let url = URL(string: "alexa://")!
    if #available(iOS 10, *) {
        UIApplication.shared.open(url, options: [:], completionHandler: {
            (success) in
            guard success else {
                //Error here
            }
            //Success here
        })
    } else {
        if let success = UIApplication.shared.openURL(url) {
           //Success here
        } else {
          //Error here
        }
    }

否则只需使用UIApplication.shared.open。另外,我会向您传递给tableViewCell的数据模型添加一个URL字段,然后只从模型中查找URL。