我对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
}
答案 0 :(得分:0)
我认为需要重新构建您的架构。
你需要在顶部有一个静态view
(有播放器),在它下面有一个tableView
,在didSelectRowAtIndexPath
上只需更新播放器。
答案 1 :(得分:0)
您可以尝试为tableView标题创建自定义视图:
func tableView(tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
let headerView = YourWebView()
return headerView
}
因此,您将能够滚动所有内容