关闭所有导航 ViewController 后将值传递给主 ViewController 并执行操作
Posted
技术标签:
【中文标题】关闭所有导航 ViewController 后将值传递给主 ViewController 并执行操作【英文标题】:Pass values and do actions to main ViewController after dismissing all navigation ViewControllers 【发布时间】:2020-07-17 23:08:44 【问题描述】:我有一个 mainViewController,按一个按钮显示 Navigation VC 的 vc1,然后按一个按钮转到 vc2 然后 vc3,在 Navigation VC 的 vc3 上按一个按钮后,我想关闭整个 Navigation VC 并使用关于vc3 在 mainViewController 上进行设置。
下面是我的vc3,猜猜我应该在@IBAction func onContiuneEditing 中的navigationController?.dismiss 之前添加代码?
提前谢谢你!
class PhotoViewController: UIViewController
var photo: Photo! = nil
@IBOutlet var imageView: UIImageView!
@IBOutlet var dateLabel: UILabel!
@IBOutlet var filterLabel: UILabel!
override func viewDidLoad()
super.viewDidLoad()
imageView.image = UIImage(data: photo.currentImage)
dateLabel.text = String(photo.date.description.split(separator: " ")[0])
filterLabel.text = photo.filter
// Do any additional setup after loading the view.
@IBAction func onShare(_ sender: Any)
let activityController = UIActivityViewController(activityItems: [imageView.image!], applicationActivities: nil)
self.present(activityController, animated: true, completion: nil)
@IBAction func onContiuneEditing(_ sender: Any)
navigationController?.dismiss(animated: true, completion: nil)
【问题讨论】:
【参考方案1】:您可以通过设置和使用展开转场来做到这一点。
【讨论】:
【参考方案2】:如果你想将数据传递到vc3到vc1,你可以使用NotificationCenter或Protocol Delegates。
因为您有 3 层导航,我建议您使用 NotificationCenter。
使用 NotificationCenter 发布本地通知并在您的 vc1.xml 中设置一个侦听器。当那个监听器被执行时,你可以执行你的操作。 例如:
在PhotoViewController
中@IBAction func onContiuneEditing(_ sender: Any)
NotificationCenter.default.post(name: NSNotification.Name(rawValue:CONTINUE_EDITING), object: nil)
navigationController?.dismiss(animated: true, completion: nil)
在vc1
override func viewDidLoad()
NotificationCenter.default.addObserver(self, selector: #selector(continueEditing), name: Notification.Name(rawValue: CONTINUE_EDITING), object: nil)
func continueEditing()
【讨论】:
以上是关于关闭所有导航 ViewController 后将值传递给主 ViewController 并执行操作的主要内容,如果未能解决你的问题,请参考以下文章
如果 ViewController 包含作为根的 TableView,如何将 ViewController 添加到导航控制器? [关闭]