在使用Swift呈现新的Viewcontroller后,取消以前的Viewcontroller,可以通过以下几种方法实现:
navigationController?.popViewController(animated: true)
这会将当前的Viewcontroller从导航堆栈中移除。
dismiss(animated: true, completion: nil)
这会将当前的Viewcontroller关闭并返回到呈现它的Viewcontroller。
在新的Viewcontroller中定义代理协议和代理属性:
protocol ViewControllerDelegate: AnyObject {
func viewControllerDidCancel(_ viewController: UIViewController)
}
class NewViewController: UIViewController {
weak var delegate: ViewControllerDelegate?
// 取消按钮点击事件
@IBAction func cancelButtonTapped(_ sender: UIButton) {
delegate?.viewControllerDidCancel(self)
}
}
在呈现新的Viewcontroller的地方,设置当前Viewcontroller为代理,并实现代理方法:
class CurrentViewController: UIViewController, ViewControllerDelegate {
// 呈现新的Viewcontroller
func presentNewViewController() {
let newViewController = NewViewController()
newViewController.delegate = self
present(newViewController, animated: true, completion: nil)
}
// 实现代理方法
func viewControllerDidCancel(_ viewController: UIViewController) {
dismiss(animated: true, completion: nil)
}
}
这样,在新的Viewcontroller中点击取消按钮时,会调用代理方法,从而取消当前的Viewcontroller。
在新的Viewcontroller中发送取消通知:
@IBAction func cancelButtonTapped(_ sender: UIButton) {
NotificationCenter.default.post(name: NSNotification.Name("CancelNotification"), object: nil)
}
在之前的Viewcontroller中监听通知,并实现对应的取消方法:
class CurrentViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
NotificationCenter.default.addObserver(self, selector: #selector(cancelViewController), name: NSNotification.Name("CancelNotification"), object: nil)
}
deinit {
NotificationCenter.default.removeObserver(self)
}
@objc func cancelViewController() {
dismiss(animated: true, completion: nil)
}
}
这样,在新的Viewcontroller中点击取消按钮时,会发送一个名为"CancelNotification"的通知,之前的Viewcontroller监听到该通知后,会调用取消方法,从而取消当前的Viewcontroller。
以上是几种常见的在使用Swift呈现新的Viewcontroller后取消以前的Viewcontroller的方法。根据你的具体需求和场景,选择适合的方法来实现取消操作。对于Swift的开发,你可以使用腾讯云的云开发产品,如Serverless云函数(SCF)来进行函数计算,提供后端服务支持。另外,腾讯云还提供了腾讯云开发工具包(TencentCloud SDK),可以帮助你在开发过程中使用各类腾讯云服务。详细了解和使用腾讯云开发产品和工具,请访问腾讯云官方网站:https://cloud.tencent.com/。
领取专属 10元无门槛券
手把手带您无忧上云