从一个单元格转到不同的控制器(详细视图和 avcontroller)

Posted

技术标签:

【中文标题】从一个单元格转到不同的控制器(详细视图和 avcontroller)【英文标题】:Segue to different controllers from one cell (a detail view and a avcontroller) 【发布时间】:2019-10-19 14:16:11 【问题描述】:

如果有视频,点击单元格时,我只想显示视频(在 avPlayerViewController 中),如果没有视频,它会转到详细视图w

我试过这个:

func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) 


    let post = postArray[indexPath.item]
    let controller = PostDetailViewController.fromStoryboard(post: post)
    self.navigationController?.pushViewController(controller, animated: true)


    guard let videoURL = URL(string: post.videoLink)  else 
        return
            

    let avPlayer = AVPlayer(url: videoURL)
    let avController = AVPlayerViewController()
    avController.player = avPlayer

    present(avController, animated: true) 
        avPlayer.play()
    


如果有视频,它会播放视频(来自 Firebase),但它也会打开详细视图。所以我希望单元格只打开视频或只打开详细视图

【问题讨论】:

【参考方案1】:

构造它,如果没有post.videoLink,则推送PostDetailViewController,否则将播放视频:

func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) 

    guard let videoURL = URL(string: post.videoLink) else 
        //If there is no URL, then this else condition will be called. Otherwise, the code below the guard statement will be called, and the video player will appear.
        let post = postArray[indexPath.item]
        let controller = PostDetailViewController.fromStoryboard(post: post)
        self.navigationController?.pushViewController(controller, animated: true)
        return
    

    let avPlayer = AVPlayer(url: videoURL)
    let avController = AVPlayerViewController()
    avController.player = avPlayer

    present(avController, animated: true) 
        avPlayer.play()
    


【讨论】:

我尝试了类似if post.videoLink == "" 的方法,但没有成功。我该怎么做? 好吧,当一个帖子没有与之关联的视频时,post.videoLink 等于 ”” 还是等于 nil 当我让它等于 nil 时,我得到'nil' cannot be assigned to type 'String'。我对 swift 有点陌生,所以我不知道该怎么做。 您能在没有视频的帖子中查看post.videoLink 的值吗?我想它等于””。它不能等于nil 感谢您的帮助,当我将pushViewController(controller, animated: true) 放入if post.videoLink == "" 时,它起作用了

以上是关于从一个单元格转到不同的控制器(详细视图和 avcontroller)的主要内容,如果未能解决你的问题,请参考以下文章

为啥我不能从 UITableView 单元格转到 detailView 工作?

使用单元格中的按钮转到详细视图控制器

如何从表视图控制器转到详细控制器并返回

iOS 跳转到不同的视图

关闭没有 NavigationController 的推送视图控制器

从视图控制器转到表格视图的下一个单元格