我有一个“自定义对话框”,当我使用“关闭”时,它会返回到其调用方。我想要它然后调用另一个ViewController。我可以从“自定义对话框”本身或从父对话框中执行此操作,如果我发现它已经返回。
获取另一个ViewContorller的正确方法是什么?
答案 0 :(得分:0)
作为一种选择,可以使用委托模式来实现。这里是一些元代码:
class CallerController: UIViewController {
let dialog: CustomDialog()
func viewDidLoad() {
super.viewDidLoad()
dialog.delegate = self
}
func showDialog() {
dialog.show()
}
}
extension CallerController: CustomDialogDelegate {
func dialogWillDisappear() {
dialog.hide()
// navigate to another view controller here
}
}
protocol CustomDialogDelegate {
func dialogWillDisappear()
}
class CustomDialog {
weak var delegate: CustomDialogDelegate?
func someButtonDidTap() {
delegate.dialogWillDisappear()
}
}
这个想法是:您可以在caller
中使用对话框进行操作,并在那里执行任何导航。
答案 1 :(得分:0)
我对此感到非常恐惧。这肯定是不合时宜的答案。我对代表和协议的理解不强。从防御上来说,这是直接解决问题的方法。
以下函数在调用ViewController中。 var dialogSemaphore在类外部声明为全局变量,初始值为3。 当用户在弹出对话框中按下“保存”,并选择到ViewHistory viewController时,dialogSemaphore更新为4。在对话框启动之前调用nextIteration()。额外的延迟允许在实际segue发生之前进行任何整理例程。
main_filter