检测到按下后退按钮后,如何将数据发送回第一个视图控制器?

草稿

现在使用委托模式传输数据:

我已经实现了这个功能:

 var overviewController = addOverview()

override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view.
    overviewController.delegate = self
}

func setValues(){
    overview.name = buildingName.text!
    overview.city = city.text!
    overview.contact = contactName.text!
    let dateFormatter = DateFormatter()
    dateFormatter.dateFormat = "MM-dd-yyyy"
    overview.date = dateFormatter.string(from: datePicker.date)
    overview.email = email.text!
    overview.building = buildingTypes[buildingPicker.selectedRow(inComponent: 0)]
    overview.freq = cleaningFreqs[cleaningFreqPicker.selectedRow(inComponent: 0)]
    overview.phone = phoneNumber.text!
    overview.sft = sqFt.text!
    overview.state = State.text!
    overview.street = street.text!
}



// MARK: - Navigation

override func willMove(toParent parent: UIViewController?) {
    super.willMove(toParent:parent)
    if parent == nil {
        setValues()
        print("Hello")
        delegate?.setValues(obj: overview)
    }
}

这里是我写的协议中的 setValues:

func setValues(obj: overviewProps){
    overview = obj
}

但是,在打印对象的属性之一后,数据尚未传输。

柴冷

您可以使用委托模式或使用观察者。请参阅这些示例以获取帮助。

编辑:根据您的代码使用委托

协议

protocol SetValueDelegate {
    func didFinishSetValue(obj: Overview)
}

第一个视图控制器

class FirstViewController: UIViewController, SetValueDelegate {

   var secondViewController = SecondViewContrller()

   override func viewDidLoad() {
       super.viewDidLoad()
       secondViewController?.delegate = self
   }

   func didFinishSetValue(obj: Overview) {
       // when it comes back to the first screen you can use ->> obj data
   }

}

第二个视图控制器

class SecondViewController: UIViewController {
   var delegate: SetValueDelegate?

   override func viewDidLoad() {
       super.viewDidLoad()
       …
   }
   override func willMove(toParent parent: UIViewController?) {
      super.willMove(toParent: parent)
      if parent == nil {
         setValues()
         …
         self.delegate?.didFinishSetValue(obj: overview)
      }
   }

}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何返回情节提要上的第一个视图控制器?

如何将两个视图控制器连接到情节提要中的一个按钮?

如何退回到导航堆栈上的第一个视图控制器

如何将数据从视图控制器传递到导航控制器,然后再传递到另一个视图控制器?

如何将数据从视图控制器传递到选项卡栏控制器的第一个选项卡

当您从其他视图控制器中选择数据时,如何将数据从一个视图控制器保存(追加)到另一个视图控制器?

在第一个视图控制器出现后做一些事情

如何使后退按钮始终转到上一个视图控制器

5秒后从第一个视图控制器移至第二个

如何将所选数据传递回上一个视图控制器

如何将按钮从一个视图控制器隐藏到另一个

在我的情况下,如何将数据从一个控制器传递到另一个控制器

当在Xcode中按下按钮时,如何去同一个视图控制器?

如何将数据从一个视图控制器传递到另一个SWIFT

如何将数据从Sails.js中的模型发送回控制器

如何将数据从模型迅速发送回控制器?

将数据移动到另一个视图控制器,但是第二个视图控制器先加载第一个视图控制器

Swift:在XLPagerTabStrip中使用子视图控制器后,如何选择回到第一个视图控制器

将数据从第二个视图传递到第一个视图控制器

当按下后退箭头图标时,如何将意图数据发送回上一个活动?

如何将数据从一个视图控制器传递到另一个?

如何将数据从弹出视图控制器发送到主视图控制器。传递一个字符串,以便我可以将其作为主视图中的标签文本

如何将数据从一个视图控制器传递到另一个视图控制器,并且在视图控制器之间有一个显示视图控制器

使用导航控制器按下后退按钮后,如何防止之前的片段出现?

如何将第二个视图控制器文本字段值传递给第一个视图控制器数组并在 swift4 中点击按钮时关闭

如何将ajax请求的数据发送回控制器?

如何使用通知中心将数据从第三个视图控制器向后移动到第一个视图控制器?

按下后退按钮时如何显示第一个片段?

如何在不按后退按钮和关闭按钮的情况下将数据从第二个活动传递到第一个(弹出窗口)?