【发布时间】:2019-02-23 08:41:48
【问题描述】:
大家好,希望你们做得很好。我有疑问,当我尝试使用自定义委托函数时,如果不使用准备 segue 或当前视图控制器就不会调用回调函数,如果这两个概念仅用于直接处理前后控制器,是否有可能实现这一点.简单地说,我有 3 个视图控制器,当我在第 3 个视图控制器中执行某些操作时,我想更新我的第一个视图控制器标签。可以通过委托吗?请帮助我,我在过去两天一直在苦苦挣扎,我找不到答案,所以请指导我。
这是我的代码 在我的第三个视图控制器中
protocol ThirdViewControllerDelegate: class {
func updateLabel(title: String)
}
然后我创建了一个属性weak var delegate: ThirdViewControllerDelegate?
我已经在
中赋值了@IBAction func thirdControllerButtonTapped(_ sender: UIButton) {
delegate?.updateLabel(title: "iOS_Developer")
dismiss(animated: true, completion: nil)
}
我已经在我的第一个视图控制器中采用了这个委托,并且
lazy var thirdController = ThirdViewController()
thirdController.delegate = self
func updateLabel(title: String) {
print("Your updated Label is \(title)")
}
但是这个函数没有被调用。在这里我如何设置委托参考所以请帮助我。
【问题讨论】:
-
您在第一个视图控制器的哪个位置设置委托?以及如何导航到
thirdController? -
您在 var 声明中创建了一个新的 ThirdViewController() ,而不是正在访问的那个,可能是由情节提要。在您的 prepareForSegue: 函数中,获取目标视图控制器,然后设置委托。
-
我正在使用@DávidPásztor self.present(FirstViewController, animated: true, completion: nil) 展示控制器
-
我不想使用准备 segue 或呈现视图控制器。是否可以通过我创建委托@JonJ的类的实例来实现
-
你能分享一下视图控制器的相关代码吗?显示设置委托、使用它以及推送和弹出操作?