我正在使用swift开发一个简单的基于UI工具包的游戏,有些页面会触发一个模态或另一个页面;当此页面完成后,它将返回调用页面。
我想知道的是我如何通知或观看或以其他方式收听它,以便我可以采取一些行动。
例如。
游戏有3名玩家
带模态对话框的页面。用户对此模式执行操作
对话框被解除并返回一些更改
现在,启动页面会轮流转移到下一位玩家,或者轮流上没有其他玩家;转到下一个segue。
我相信可以使用Protocols来实现吗?
所以我想要的是听UINavigation回到我的启动页面并做一些动作。
但是如何使用Swift做到这一点?
由于
答案 0 :(得分:1)
为此,您可以在swift中使用闭包。
当您展示第二个控制器时,您可以将closure
设置为第二个控制器的属性。现在,当您关闭第二个控制器时,可以在第二个控制器的解除块中调用此闭包。
示例:强>
class FirstViewController: UIViewController
{
func presentSecondController()
{
let secondController = UIStoryboard.init(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "SecondViewController") as! SecondViewController
secondController.completionClosure = {
//Write your code here that you want to execute on FirstViewController when secondController is dismissed
}
self.present(secondController, animated: true, completion: nil)
}
}
class SecondViewController: UIViewController
{
var completionClosure : (()->())?
func dismissController()
{
self.dismiss(animated: true) {
if let closure = self.completionClosure
{
closure()
}
}
}
}