私は委任を介して関数内に存在する変数を渡しています。ほとんどの場合、すべてがうまくいくようです。私が把握できない唯一のことは、デリゲートをどのように設定するかということです。 "foo".delegate = self
デリゲートを設定する方法/場所
通常はこれは簡単ですが、私はクラスの代わりに関数内にある変数を使っているため、foo
が何であるか分かりません。あなたの参照
のプレースホルダ)
はここでのプロトコルです:
:ここprotocol TagToIndexDelegate {
func finishPassing (dictionary:Dictionary<Int,Int>)
}
は私がから変数を送信しようとしています機能です
extension MyCell: YSSegmentedControlDelegate {
func segmentedControl(_ segmentedControl: YSSegmentedControl, willPressItemAt index: Int) {
tagToIndex[actionButton.tag] = index
delegate?.finishPassing(dictionary: tagToIndex)
}
func segmentedControl(_ segmentedControl: YSSegmentedControl, didPressItemAt index: Int) {
}}
delegate
はタイプ
TagToIndexDelegate
である
、そしてwillPressItemAt
内に存在する変数tagToIndex
は私が渡していたデータです。
そして最後に、クラスIはTagToIndexDelegate
class AnswerViewController: UIViewController, TagToIndexDelegate {
func finishPassing (dictionary: Dictionary <Int, Int>)
{
}
override func viewDidLoad() {
super.viewDidLoad()
}
}
を実装しようとしていますが、私はそう任意のヘルプや批判が大幅に高く評価され、デリゲートを使用してはかなり新しいです。
おかげで、
ニック
私はここで何が起こっているか完全にはわかりません。デリゲートが 'MyCell'の一部である場合、' MyCell'を初期化する者はデリゲートを設定しませんか?それはどこに起こるのですか? – Ssswift
あなたはviewDidLoadの中で試してみましたか? – Boris