Swift UITableView didSelectRowAtIndexPath in multipleSection和多个原型单元格

时间:2015-11-30 07:42:45

标签: ios swift uitableview

我对UITableView有疑问。我想构建一个表,第一行是静态单元格,我使用UIWebView来播放视频。下面的其他行将是视频列表。当我点击列表中的视频时,我想在第一行播放它。

任何人都可以帮助我为这种情况设置函数didSelectRowAtIndexPath吗?非常感谢你。

这是我的代码:

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {

    if indexPath.section == 0 {
        let cell2 = tableView.dequeueReusableCellWithIdentifier("staticCell", forIndexPath: indexPath) as! staticCell
        let htmlString = "<video width='100%' webkit-playsinline controls autoplay ><source src= 'http://203.162.121.235:1935/live/tranhieuapt.rqv3-1d9w-hx44-5y3m/playlist.m3u8'></video>"
        cell2.videoView.loadHTMLString(htmlString, baseURL: nil)
        return cell2
    } else if indexPath.section == 1 {
        let cell = tableView.dequeueReusableCellWithIdentifier("dynamicCell", forIndexPath: indexPath) as! dynamicCell
        // Get data function
        func getDataFromUrl(url:NSURL, completion: ((data: NSData?, response: NSURLResponse?, error: NSError? ) -> Void)) {
            NSURLSession.sharedSession().dataTaskWithURL(url) { (data, response, error) in
                completion(data: data, response: response, error: error)
                }.resume()
        }
        // Download Image Function
        func downloadImage(url: NSURL){
            getDataFromUrl(url) { (data, response, error)  in
                dispatch_async(dispatch_get_main_queue()) { () -> Void in
                    guard let data = data where error == nil else { return }
                    cell.thumnail.image = UIImage(data:data)
                }
            }
        }
        let vid = videoArray[indexPath.row]

        cell.titleLb.text = vid.vidTitle
        cell.viewLb.text  = vid.vidView
        cell.dateLb.text  = vid.vidDate


        let encodedUrl = vid.vidThumb.stringByAddingPercentEncodingWithAllowedCharacters(NSCharacterSet.URLQueryAllowedCharacterSet())
        if let checkedUrl = NSURL(string: encodedUrl!) {
            cell.thumnail.contentMode = .ScaleAspectFit
            downloadImage(checkedUrl)
        }

        return cell
    }
    let cell = UITableViewCell()
    return cell
}

2 个答案:

答案 0 :(得分:0)

我认为需要重新构建您的架构。

你需要在顶部有一个静态view(有播放器),在它下面有一个tableView,在didSelectRowAtIndexPath上只需更新播放器。

答案 1 :(得分:0)

您可以尝试为tableView标题创建自定义视图:

func tableView(tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
    let headerView = YourWebView()

    return headerView
}

因此,您将能够滚动所有内容