gpt4 book ai didi

xcode - @IBAction 函数中 NSNotificationCenter 的问题

转载 作者:行者123 更新时间:2023-11-28 08:52:51 25 4
gpt4 key购买 nike

我正在开发一个需要我的主视图 Controller 接收来自其 subview Controller 的通知的应用程序。为此,我在父 Controller 的 viewDidLoad() 方法中设置了观察者,并尝试在按下按钮时调用 postNotificationName() 函数位于 subview Controller 中。

postNotificationName() 调用位于 @IBAction func buttonPressed(){ } 函数中时,观察者永远不会收到通知。但是,当从同一 View Controller 中的不同函数调用相同代码时,它会起作用。

我认为这可能是一个线程问题,并且针对该问题尝试了很多解决方案均未成功。不过,我对线程不是很熟悉,所以也许我还是错过了它。有谁知道可能是什么问题?

感谢您的帮助!

View Controller

class GameController: UIViewController {

override func viewDidLoad() {

super.init()


NSNotificationCenter.defaultCenter().addObserver(self, selector: "attemptHumanMove:", name: Constants.NSNotificationKey.tilePressed, object: nil)

}


func attemptHumanMove(notification: NSNotification) {
print("test")
}

subview Controller

@IBAction func tileTouched(sender: AnyObject) {
NSNotificationCenter.defaultCenter().postNotificationName(Constants.NSNotificationKey.tilePressed, object: nil, userInfo: ["a": 0])
}

最佳答案

试验您提到的流程,以下代码确实从 subview Controller 接收通知消息。

父 View Controller

class ViewController: UIViewController {

@IBOutlet weak var notificationMsgLabel: UILabel!

override func viewDidLoad() {
super.viewDidLoad()

notificationMsgLabel.text = "Waiting for notification..."
NSNotificationCenter.defaultCenter().addObserver(self, selector: "attemptHumanMove:", name: "tilePressed", object: nil)
}

func attemptHumanMove(notification: NSNotification) {
print("Notification message received!")
notificationMsgLabel.text = "Notification received!!!"
}
}

subview Controller

class ChildViewController: UIViewController {

override func viewDidLoad() {
super.viewDidLoad()
}

@IBAction func sendNotification() {
print("Sending notification message!!!")
NSNotificationCenter.defaultCenter().postNotificationName("tilePressed", object: nil, userInfo: ["a": 0])
}
}

您可以在此处找到 Storyboard的屏幕截图: Storyboard Snapshot

关于xcode - @IBAction 函数中 NSNotificationCenter 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33770496/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com