0

次のように、あるView Controllerから別のView Controllerにセグエしています:

    switch popIndex {

    case 301:
        let destVC = segue.destination as! IDPopoverViewController
        destVC.popIndex = popIndex
        destVC.titleString = "Issuer or Category"
...

2 番目の VC で、ユーザーは data を入力します(String)。委任を介して、このデータを元の VC に戻しています。

        case 301:
            newIssuerDelegate?.appendName(name: dataToReturn)
            print("In delegate call, dataToReturn = \(dataToReturn)")
...

デリゲート関数:

func appendName(name:String) {
    newIssuer.name = name
    issuerNameLabel.text = name
    print("In appendName, name = \(name)")
    saveIt()
}

議定書

protocol NewIssuerProtocol {
    func appendName(name:String)
...

問題:

データはデリゲート関数に到達しないようです。データはissuerNameLabelにもprintステートメントにも表示されません。クラッシュせず、元の VC に戻ってアイドル状態になり、別のコマンドを待ちます。

デリゲート呼び出し (予想どおり停止) とデリゲート関数にブレークポイントを配置しました。データの受信は、ブレークポイントによってもprintステートメントによっても確認されません。同じプロトコルの他の (6) デリゲート関数のいずれも、関連するデータを受信または表示していないようです。ただし、アプリ全体で同様に構築されたいくつかの委任スキームは問題なく機能しています。

私の嘆願

誰かが私がこれで間違っていることを見つけることができますか?

すべての助けに感謝します!

修理

@vadian が以下で寛大に指摘したように、セグエの準備時にデリゲートを設定するのを怠りました!

    case 301:
        let destVC = segue.destination as! IDPopoverViewController
        destVC.popIndex = popIndex
        destVC.titleString = "Issuer or Category"
        destVC.newIssuerDelegate = self
4

0 に答える 0