2017-04-21 96 views
-2

我正在用Swift 3构建一个简单的应用程序。所以我有一个TableView List和Detail View。所以我创建了拖拽方法来将细节视图中的项目添加到TableView List中。如何将值从DetailView传递给TableViewList

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传递一些值作为布尔值?

我想通过例如该参数

布尔是否新款= 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() 
      } 
+0

您可以使用委托将值从DetailView传递给tableView列表。 –

+0

你可以使用NsnotificationCenter传递价值 –

+0

@Karthick我如何从代理传递价值? – bircastri

回答

2

有2种方法来做到这一点。

  • 代表/协议
  • 通知中心

代表是完美的从详细传递的值列表,因为代表用于1对1消息传递,并通知中心被用于广播。

在这里你可以得到它的例子。 Pass data back to previous viewcontroller

+0

我刚刚编辑我的问题,你能看到它吗? – bircastri