我的Swift应用程序出了问题。我使用了Swift 3和Xcode 8。
我已经实现了TableViewController和DetailViewController。
所以我想添加一个新项目,然后自动刷新TableViewController。
所以这是我从DetailViewController点击OK按钮时调用的TableViewController的代码。
@IBAction func tornaAllaLista(_ segue: UIStoryboardSegue){
do {
var vistaDettaglio: AggiungiLuceViewController = segue.source as! AggiungiLuceViewController
if(vistaDettaglio.nuovaLuce != nil){
//verifico se devo aggiungere un valore o lo devo aggiornare
print(vistaDettaglio.isNew)
if(vistaDettaglio.isNew){
self.listaLuci.append(vistaDettaglio.nuovaLuce!)
}else{
}
self.tabella.reloadData()
}
} catch let errore {
print("[CDC] problema tornaAllaLista")
print(" Stampo l'errore: \n \(errore) \n")
}
}
如果vistaDettaglio.nuovaLuce不为null,我想在TableView中添加这些新项目。
这是DetailViewController的代码:
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!
self.nuovaLuce?.descrizione = nomeLuce
self.nuovaLuce?.pin_arduino = pinArduino!
self.nuovaLuce?.tipo_luce = tipoLuce
//DEVO VERIFICARE SE SONO IN MODIFICA O SALVATAGGIO
if(self.nuovaLuce != nil && (self.nuovaLuce?.id)! > 0){
self.isNew = false;
LuciKitCoreDataController.shared.update(updateLuci: self.nuovaLuce!)
}else if(nomeLuce.characters.count>0){
self.isNew = true
//ho inserito almeno un carattere
let idInsert = LuciKitCoreDataController.shared.addLuce(descrizione: nomeLuce, pin_arduino: Int(pinArduino!), id: -1 , tipoLuce: tipoLuce)
self.nuovaLuce?.descrizione = nomeLuce
self.nuovaLuce?.pin_arduino = pinArduino!
self.nuovaLuce?.tipo_luce = tipoLuce
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)
}
}
因此,如果我尝试添加新项目,我有vistaDettaglio.nuovaLuce = NIL。
我该如何解决这个问题?
答案 0 :(得分:0)
Reactive Cocoa将为这项具体任务创造奇迹。看看吧。
如果这看起来有点过于技术性,您可以尝试使用自定义通知和通知中心,或者您可以尝试使用KVO来确定详细视图中的项目何时更改。