场景之间的数据传输-iOS App

这个主题对我和您都很重要,因为使用应用程序时,场景之间的数据传输一直在发生,因此我们必须确保一定要学习好。

在我的示例中,我将使用segue将数据发送到下一个场景,当涉及到返回上一个场景时,我将使用通知。 今天的挑战是创建一个列表,列表的数据将发送到下一个场景,并且有一个编辑场景,如果我们更改列表的内容,前一个场景的数据也会被更改。

以下是我通过segue将数据发送到下一场景的核心代码

覆盖func prepare(对于segue:UIStoryboardSegue,发件人:AnyObject?){//为segue准备数据 
 让destination = segue.destinationViewController为!  DetailViewController //设置segue的目标控制器 
 如果segue.identifier ==“ lover1Segue” {//考虑我正在使用哪个segue 
  destination.loverId = loverA.id //将数据发送到目标场景 
  destination.loverName = loverA.name 
  destination.loverCons = loverA.constellation 
  destination.loverImageName = loverA.photoName 
  } 
  } 
  @IBAction func lover1Act(_ sender:AnyObject){ 
  self.performSegue(withIdentifier:“ lover1Segue”,发送者:nil)//执行segue 
  } 

以下是我的核心代码,用于通过通知将数据发送回上一个场景

起始场景:

  func updateData(_ sender:AnyObject){ 
 让notiName = Notification.Name(“ updateData”)//定义通知的名称 
  NotificationCenter.default.post(名称:notiName,对象:nil,userInfo:[“ loverId”:self.loverId,“ loverName”:self.nameTxt.text!,“ loverCons”:self.consTxt.text!,“ loverImageName” :loverImageName])//发送通知 
  navigationController?.popViewController(animated:true)//将导航控制器弹出回到上一个场景 
  } 

目的地场景:

  func getUpdateNoti(noti:Notification){ 
 让newLoverName = noti.userInfo![“ loverName”]为! 字符串//获取通过ID通知发送的信息 
 让newLoverCons = noti.userInfo![“ loverCons”]为! 串 
 让newLoverImageName = noti.userInfo![“ loverImageName”]为! 串 
  self.loverName = newLoverName 
  self.loverCons = newLoverCons 
  self.loverImageName = newLoverImageName 
  } 

这些代码不是整个项目,而只是该主题的那些重要代码,如果您想查看整个项目,则可以查看我的gitHub。

https://github.com/imbearfly/lover.git