【问题标题】:Pass values and do actions to main ViewController after dismissing all navigation ViewControllers关闭所有导航 ViewController 后将值传递给主 ViewController 并执行操作
【发布时间】: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)
    }

【问题讨论】:

    标签: ios swift


    【解决方案1】:

    您可以通过设置和使用展开转场来做到这一点。

    【讨论】:

      【解决方案2】:

      如果你想将数据传递到vc3到vc1,你可以使用NotificationCenterProtocol 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() {
      
      }
      

      【讨论】:

        猜你喜欢
        • 2019-11-25
        • 1970-01-01
        • 1970-01-01
        • 2018-03-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多