ios - 关闭模态视图时在 VC 中触发函数

标签 ios swift delegates modal-dialog protocols

我试图在将模态 VC (FirstStartVC) 解散回主 VC 后触发一个函数。我知道我必须使用委派,但它不起作用,我的调试区域仍然是空的。

在其他问题主题中,有些人的工作方式与下面完全相同。所以我不知道我做错了什么。有谁知道我需要对代码进行哪些更改?

//  FirstStartVC.swift
//

import UIKit
import CoreData
import JSSAlertView

protocol NewUser: class {
    func newUserAction()
}

class FirstStartVC: UITableViewController, UITextFieldDelegate {

    var delegation : NewUser?

    func saveNewUser(){
            self.delegation?.newUserAction()
            self.dismiss(animated: true, completion: nil)
        }
    }

    @IBAction func saveSettings(_ sender: Any) {
        self.saveNewUser()
    }

    override func viewDidLoad() {
        super.viewDidLoad()

        print (delegation)

    }
}





//
//  ViewController.swift
//

import UIKit
import UserNotifications
import GoogleMobileAds
import CoreData
import JSSAlertView

class ViewController: UIViewController, UNUserNotificationCenterDelegate, NewUser {
    func newUserAction() {
        print("Reload some labels")
    }

    override func viewDidLoad() {
        super.viewDidLoad()

        var firstStart = FirstStartVC()
        firstStart.delegation = self

    }
}

最佳答案

swift 3

在你的主 VC viewDidLoad 添加:

NotificationCenter.default.addObserver(self, selector: #selector(mainVc.functionName), name:"NotificationID", object: nil)

并在主VC中添加一个函数

func functionName() {

    // Do stuff

}

在FirstStartVC中调用方法

NotificationCenter.default.postNotificationName("NotificationID", object: nil)

希望这对您有所帮助!


Swift 4 上的简单编辑

NotificationCenter.default.addObserver(self, selector: #selector(self.funcName), name: NSNotification.Name(rawValue: "NotificationID"), object: nil)

在函数定义之前放置@objc

@objc func functionName() {

    // Do stuff

}

关于ios - 关闭模态视图时在 VC 中触发函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41618182/

相关文章:

ios - 在尚未加载的 VC 上使用委托(delegate)

javascript - 如何使用访问 token 来规避 FB.login()

ios - 在iOS浏览器中onbeforeunload无法正确运行

iphone - UITableViewController 不调用委托(delegate)方法

c# - 委托(delegate) P/Invoke 传递的实例方法

Swift 可变集 : Duplicate element found

ios - Xcode 12,为 iOS 模拟器构建,但链接为 iOS 构建的目标文件,用于架构 x86_64

ios - 专门使用这行代码时无法解包值

swift - UITextField 总是返回 nil

ios - 无法从 KASlideShow pod 加载图像