场景之间的数据传输-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