2017-04-21 145 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