Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/107.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 将协议和委托设置为从集合视图传输数据无效_Ios_Swift_Delegates_Uicollectionview_Protocols - Fatal编程技术网

Ios 将协议和委托设置为从集合视图传输数据无效

Ios 将协议和委托设置为从集合视图传输数据无效,ios,swift,delegates,uicollectionview,protocols,Ios,Swift,Delegates,Uicollectionview,Protocols,我在Swift中创建了一个示例项目,其中有一个按钮和一个ImageView作为布局。单击按钮后,它将加载包含一组图像的集合视图。我能够加载图像,并知道它位于什么索引。我想将此信息传递回原始视图控制器,并在图像视图中显示它。为此,我创建了一个协议: protocol CollectionViewControllerDelegate { func logoCollectionViewController(controller: CollectionViewController, logoIm

我在Swift中创建了一个示例项目,其中有一个按钮和一个ImageView作为布局。单击按钮后,它将加载包含一组图像的集合视图。我能够加载图像,并知道它位于什么索引。我想将此信息传递回原始视图控制器,并在图像视图中显示它。为此,我创建了一个协议:

protocol CollectionViewControllerDelegate {
    func logoCollectionViewController(controller: CollectionViewController, logoImage: UIImage)
}
此协议是在my CollectionViewController中定义的:

class CollectionViewController: UICollectionViewController, UICollectionViewDelegate {
我还设置了我的委托:

var collectionViewDelegate : CollectionViewControllerDelegate?
这是我调用它的代码:

override func collectionView(collectionView: UICollectionView, didSelectItemAtIndexPath indexPath: NSIndexPath) {
    var imageName = defaultImageList[indexPath.row]
    selectedImage = UIImage(named: imageName)
    collectionViewDelegate?.logoCollectionViewController(self, logoImage: selectedImage)
    self.dismissViewControllerAnimated(true, completion: nil)
    println("Cell \(indexPath.row) selected")
}
在原始视图控制器上

class ViewController: UIViewController, CollectionViewControllerDelegate {
我希望它符合协议,并将功能定义为:

func logoCollectionViewController(controller: CollectionViewController, logoImage: UIImage) {
    logoView.image = logoImage
    print("Logo Loaded")
}

但是,不会调用此函数。如何将ViewController的委托链接到CollectionViewController,以传递协议中定义的图像信息?感谢您在这方面的帮助,因为我被困在这里,不确定我缺少了什么。

很抱歉我的英语不好,在OS X应用程序中,我希望在您的ViewController的ViewDiLoad或override Prepareforsgue中执行以下操作:

let myVc = window!.contentViewController as! CollectionViewController
myVc.delegate = self
所以我想你已经得到了CollectionViewController的一些实例,并将其分配给self。不过,我不知道如何在iOS应用程序中做到这一点

这是我以前的答案,也是同样的问题,但在OSX中