gpt4 book ai didi

ios - Swift 2 - 两个 UICollectionViewController 之间的协议(protocol)委托(delegate)

转载 作者:行者123 更新时间:2023-11-29 11:56:45 25 4
gpt4 key购买 nike

我正在尝试在两个 UICollectionViewController 之间创建一个协议(protocol)委托(delegate)。使用我拥有的代码,我没有收到任何错误或警告,但是,我无法让委托(delegate)工作。我错过了什么?

第二个收藏 View

    public protocol LettersCollectionViewDelegate: class {

func DidSelectLetter(collectioView: UICollectionView,letter: Character, resultString:String)

}

class LettersCollectionView: UICollectionViewController {

// DELEGATE
weak var delegate: LettersCollectionViewDelegate?

override func collectionView(collectionView: UICollectionView, didSelectItemAtIndexPath indexPath: NSIndexPath) {

let cell : UICollectionViewCell = collectionView.cellForItemAtIndexPath(indexPath)! as! LetterCellView



delegate?.DidSelectLetter(collectionView, letter: "T", resultString:"TestString")

}

}

第一个 Collection View

class AnswerCollectionView: UICollectionViewController {

let lettersView = LettersCollectionView()

override func viewDidLoad() {
super.viewDidLoad()

self.lettersView.delegate = self

}

}

extension AnswerCollectionView: LettersCollectionViewDelegate {

func DidSelectLetter(collectioView: UICollectionView, letter: Character, resultString: String) {

print(letter)
}
}

更新

enter image description here

最佳答案

您需要将委托(delegate)作为嵌入在 Root View Controller 中的 AnswerCollectionView 的实例。同样,您需要在 Root View 中的 LettersCollectionView 实例上设置委托(delegate)。 let lettersView = LettersCollectionView() 创建一个新实例

您可以在 Root View Controller 的 prepareForSegue 中获取所需的引用。您需要在 Storyboard标识符中提供两个嵌入的 segue,以便识别它们。

class ViewController: UIViewController {
var lettersView: LettersCollectionView?
var answersView: AnswersCollectionView?

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if segue.identifier == "lettersSegue" {
let lettersView = segue.destinationViewController as? LettersCollectionView
} else if segue.identifier = "answersSegue" {
let answersView = segue.destinationViewController as? AnswersCollectionView
}

self.lettersView?.delegate = self.answersView
}

关于ios - Swift 2 - 两个 UICollectionViewController 之间的协议(protocol)委托(delegate),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38809160/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com