如何将值从DetailView传递给TableViewList
我正在使用Swift 3构建一个简单的应用程序。所以我有一个TableView List和一个Detail View。 所以我创建了tow方法来将详细信息视图中的项添加到TableView列表中。
Detail.swift:
override func prepare(for segue: UIStoryboardSegue, sender: Any?) { //se il pulsante cliccato è diverso da OK torno indietro if sender as? NSObject != self.buttonOK{ return } let nomeLuce = self.textNomeLuce.text! let pinArduino = Int16(self.textPinArduino.text!) let tipoLuce = self.textTipoLuce.text! //DEVO VERIFICARE SE SONO IN MODIFICA O SALVATAGGIO if((self.nuovaLuce?.id)! > 0){ self.nuovaLuce?.descrizione = nomeLuce self.nuovaLuce?.pin_arduino = pinArduino! LuciKitCoreDataController.shared.update(updateLuci: self.nuovaLuce!) }else if(nomeLuce.characters.count>0){ //ho inserito almeno un carattere let idInsert = LuciKitCoreDataController.shared.addLuce(descrizione: nomeLuce, pin_arduino: Int(pinArduino!), id: (self.nuovaLuce?.id)!) self.nuovaLuce?.descrizione = nomeLuce self.nuovaLuce?.pin_arduino = pinArduino! self.nuovaLuce?.id = idInsert }else{ let alert = UIAlertController(title:"Attenzione", message: "Inserire un nome per la Luce", preferredStyle: UIAlertControllerStyle.alert) alert.addAction(UIAlertAction(title: "OK", style: UIAlertActionStyle.default, handler: nil)) self.present(alert, animated:true, completion: nil) } }
TableView.swift
@IBAction func tornaAllaLista(_ segue: UIStoryboardSegue){ do { var vistaDettaglio: AggiungiLuceViewController = segue.source as! AggiungiLuceViewController if(vistaDettaglio.nuovaLuce != nil){ self.listaLuci.append(vistaDettaglio.nuovaLuce!) self.tabella.reloadData() }else{ } } catch let errore { print("[CDC] problema tornaAllaLista") print(" Stampo l'errore: \n \(errore) \n") } }
现在有什么办法可以在TableViewList中传递一些值作为布尔值?
我想传递例如这个参数
Boolean isNew = true | 假
编辑我不知道我是否使用了正确的方法。 但我已将此变量插入Detail.swift类:
var isNew : Bool = true
在TableView.swift类中,我使用此代码来读取此信息:
var vistaDettaglio: AggiungiLuceViewController = segue.source as! AggiungiLuceViewController if(vistaDettaglio.nuovaLuce != nil){ //verifico se devo aggiungere un valore o lo devo aggiornare if(vistaDettaglio.isNew){ self.listaLuci.append(vistaDettaglio.nuovaLuce!) }else{ } self.tabella.reloadData() }
有两种方法可以做到这一点。
- 代表/协议
- 通知中心
委托非常适合将值从详细信息传递到列表,因为委托用于1到1个消息传递,而NotificationCenter用于广播。
在这里你可以得到它的例子。 将数据传递回以前的viewcontroller