Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios Swift-无法隐藏或取消隐藏视图,因为我可以看到它_Ios_Swift_Uiview - Fatal编程技术网

Ios Swift-无法隐藏或取消隐藏视图,因为我可以看到它

Ios Swift-无法隐藏或取消隐藏视图,因为我可以看到它,ios,swift,uiview,Ios,Swift,Uiview,我有一个播客播放器应用程序的两个文件项目。我的目标是,当用户单击播放按钮(加载到nib单元格中)时,将显示带有播放/暂停的PodcastPlayerView(添加到视图控制器中的情节提要中) . ├── _DetailViewController.swift │ ├── AVPlayer │ ├── PodcastPlayerView (full-screen player view) │ └── setupPodcastPlayer (setting player's URL

我有一个播客播放器应用程序的两个文件项目。我的目标是,当用户单击播放按钮(加载到nib单元格中)时,将显示带有播放/暂停的PodcastPlayerView(添加到视图控制器中的情节提要中)

.
├── _DetailViewController.swift
│   ├── AVPlayer
│   ├── PodcastPlayerView  (full-screen player view)  
│   └── setupPodcastPlayer (setting player's URL & hide/unhide PodcastPlayerView)
│
├── _PodcastViewCell.swift (File Owner of the nib)
│   ├── url (Podcast URL of the cell)
└── └── @IBAction playPodcast (the play button in a cell)
这是在PodcastViewCell.swift中运行的大部分代码。获取单元格的itemId,查找其播客链接,然后将其传递给视图控制器

协议PodcastViewCellDelegate{
func podcastButtonClicked(podcastUrl:String)
}
类PodcastViewCell:UICollectionViewCell{
弱变量委托:PodcastViewCellDelegate?
@IBAction func Playbodcast(uu发件人:任意){
如果let itemOffset=allItems?.itemListv2.firstIndex(其中:{$0.itemId==itemAuthor?.itemId}){
podcastLink=allItems?.itemListv2[itemOffset].podcastsound
}
让url=podcastLink??“”
委托?.podcastButtonClicked(podcastUrl:URL)
}
}
这是包含Podcast Player UIView、AVPlayer Player、PodcastViewCells集合视图等的视图控制器代码。我还在代码中添加了可以和不能隐藏PodcastPlayerView的行。当我在视图未隐藏的情况下运行应用程序时,视图是可见的,并且位于它应该位于的位置。但我仍然无法在我提到的那行中取消隐藏它。这就像是视图加载并被破坏

class DetailViewController:BaseViewController{
@ibvar collectionView:UICollectionView!
@IBVAR podcastPlayerView:UIView!
var podcastLink:String=“”
静态变量itemId=“0”
玩家:玩家?
var playerItem:AVPlayerItem?
var timeObserverToken:有吗?
var=false
重写func viewDidLoad(){
super.viewDidLoad()
self.podcastPlayerView.ishiden=false“问题就在这里

DetailViewController().setupPodcastPlayer(link: url)
DetailViewController()
是一个新实例,而不是当前的实例,挂接实际显示的实例,并根据需要通过委托或通知更改其属性(如果需要)

编辑:单元格内部

weak var delegate: DetailViewController?
并将其设置在
cellForRowAt

cell.delegate = self
问题就在这里

DetailViewController().setupPodcastPlayer(link: url)
DetailViewController()
是一个新实例,而不是当前的实例,挂接实际显示的实例,并根据需要通过委托或通知更改其属性(如果需要)

编辑:单元格内部

weak var delegate: DetailViewController?
并将其设置在
cellForRowAt

cell.delegate = self

谢谢你的评论!那么我应该做的是通过一个代理传递URL,然后更改视图的可见性,对吗?请参见编辑……。我已经用代理更改更新了代码。这次我的播放机完全停止了播放,我想是因为setupPodcastPlayer根本没有运行。添加断点并按预期跟踪代码顺便说一句,这是您的另一个问题。您的问题现在得到了回答。ID
cell.delegate=self
?在
cellForRowAt
?感谢您的评论!那么我应该做的是将URL与代表一起传递,然后更改视图的可见性,对吗?请参见编辑……。我已经用代表更改更新了代码。这次是我的播放机完全停止播放我想是因为setupPodcastPlayer根本没有运行。添加断点并按预期跟踪代码。顺便说一句,这是另一个问题。您的问题现在已得到解答。ID
cell.delegate=self
?在
cellForRowAt
内?