我试图在将模态 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/