在一个UIViewController中,可以通过以下方式判断是返回到下一个UIViewController还是返回到上一个UIViewController:
if let viewControllers = self.navigationController?.viewControllers {
if viewControllers.count >= 2 && viewControllers[viewControllers.count - 2] is NextViewController {
// 返回到下一个UIViewController
} else {
// 返回到上一个UIViewController
}
}
if let presentingViewController = self.presentingViewController {
if presentingViewController is NextViewController {
// 返回到下一个UIViewController
} else {
// 返回到上一个UIViewController
}
}
在上一个UIViewController中定义委托协议:
protocol PreviousViewControllerDelegate: class {
func didReturnToPreviousViewController(from viewController: UIViewController)
}
在下一个UIViewController中设置委托属性并调用委托方法:
weak var delegate: PreviousViewControllerDelegate?
func returnToPreviousViewController() {
delegate?.didReturnToPreviousViewController(from: self)
}
在上一个UIViewController中实现委托方法:
extension PreviousViewController: PreviousViewControllerDelegate {
func didReturnToPreviousViewController(from viewController: UIViewController) {
if viewController is NextViewController {
// 返回到下一个UIViewController
} else {
// 返回到上一个UIViewController
}
}
}
以上是判断返回到下一个UIViewController还是返回到上一个UIViewController的几种常见方法。具体使用哪种方法取决于你的应用架构和需求。
领取专属 10元无门槛券
手把手带您无忧上云