检查UITableViewCell在Swift中是否完全可见

检查UITableViewCell在Swift中是否完全可见,uitableview,swift,ios8,Uitableview,Swift,Ios8,我使用Parse来存储有视频的用户,然后在PFQueryTableViewController(我相信是UITableViewController的子类)中显示他们的视频。我只希望TableViewCell中的视频完全可见,可以自动播放,但我很难播放正确的视频。我寻找解决方案,但一切都在Objective-C中,我尝试在Swift中使用这些解决方案都没有成功。这是我的密码: override func scrollViewDidScroll(scrollView: UIScrollView) {

我使用Parse来存储有视频的用户,然后在PFQueryTableViewController(我相信是UITableViewController的子类)中显示他们的视频。我只希望TableViewCell中的视频完全可见,可以自动播放,但我很难播放正确的视频。我寻找解决方案,但一切都在Objective-C中,我尝试在Swift中使用这些解决方案都没有成功。这是我的密码:

override func scrollViewDidScroll(scrollView: UIScrollView) {
    var cells = self.tableView.visibleCells()
    var indexPaths = self.tableView.indexPathsForVisibleRows()!

    if (cells.count == 1) {
        self.checkVisibilityOfCell(cells[0] as! UsersTableViewCell, forIndexPath: indexPaths[0] as! NSIndexPath)
    } else if (cells.count == 2) {
        self.checkVisibilityOfCell(cells[1] as! UsersTableViewCell, forIndexPath: indexPaths[1] as! NSIndexPath)
    } else if (cells.count > 2) {
        for i in 1...(cells.count - 1) {
            (cells[i] as! UsersTableViewCell).completelyVisible = true
        }
    }
}

func checkVisibilityOfCell(cell : UsersTableViewCell, forIndexPath : NSIndexPath){
    var cellRect : CGRect = self.tableView.rectForRowAtIndexPath(forIndexPath)
    cellRect = self.tableView.superview!.convertRect(cellRect, fromView: self.tableView)
    var completelyVisible : Bool = self.tableView.frame.contains(cellRect)
    cell.completelyVisible = completelyVisible
}

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath, object: PFObject?) -> PFTableViewCell? {
    var cell : UsersTableViewCell? = tableView.dequeueReusableCellWithIdentifier(cellIdentifier, forIndexPath: indexPath) as? UsersTableViewCell

    if(cell == nil) {
        cell = UsersTableViewCell(style: UITableViewCellStyle.Value1, reuseIdentifier: cellIdentifier)
    }

    if let pfObject = object {
        let otherUser = pfObject as! PFUser
        cell?.userDisplayed = otherUser
        if (cell?.completelyVisible == true) {
            // Video playing
            println("\(cell?.userDisplayed!.username!) is completely visible")
            var video1 = pfObject["video1"] as? PFFile
            let video1URL = NSURL(string: (video1?.url)!)
            objMoviePlayerController = MPMoviePlayerController(contentURL: video1URL)
            objMoviePlayerController.movieSourceType = MPMovieSourceType.Unknown
            objMoviePlayerController.view.frame = (cell?.userVideo1.bounds)!
            objMoviePlayerController.scalingMode = MPMovieScalingMode.AspectFit
            objMoviePlayerController.controlStyle = MPMovieControlStyle.None
            objMoviePlayerController.repeatMode = MPMovieRepeatMode.One
            objMoviePlayerController.shouldAutoplay = true
            cell?.userVideo1.addSubview(objMoviePlayerController.view)
            objMoviePlayerController.prepareToPlay()
            objMoviePlayerController.play()
        } else {
            println("\(cell?.userDisplayed!.username!) is not completely visible")
        }
    }
    return cell
}

由于某些视频确实播放,我怀疑scrollViewDidScroll或checkVisibilityOfCell的一个或两个功能不正确。任何帮助都将不胜感激

在UITableView上使用indexPathsForVisibleCell方法。好的,这只是返回实际上不可见的单元格吗?我有几个单元格不在视图中,该方法将所有单元格返回为可见。