次のように、ある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