2014-11-15 4 views
33

Sto provando a trasferire i dati da un viewController a un altro. Ho collegato un viewController a un altro controller di navigazione di ViewController e quindi l'identificatore a "showItemSegue". Ottengo un errore in queste due righe: illustrazionePassaggio dei dati con i passaggi attraverso la navigazioneController

var detailController = segue.destinationViewController as ShowItemViewController 
detailController.currentId = nextId! 

Image:

enter image description here

Il codice:

override func collectionView(collectionView: UICollectionView, didSelectItemAtIndexPath indexPath: NSIndexPath) { 


    nextId = itemArray?.objectAtIndex(indexPath.row).objectForKey("objectId") as? NSString 

    self.performSegueWithIdentifier("showItemSegue", sender: self) 

} 


override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject!) { 

    if (segue.identifier == "showItemSegue") { 
     var detailController = segue.destinationViewController as ShowItemViewController 
     detailController.currentId = nextId! 
    } 

} 
+0

si prega di inviare il messaggio di errore completo –

risposta

62

View Controller destinazione del segue è la UINavigationController. Hai bisogno di chiedere per il suo top di controllo al fine di raggiungere il controller della vista vera destinazione:

override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 
    if segue.identifier == "showItemSegue" { 
     let navController = segue.destination as! UINavigationController 
     let detailController = navController.topViewController as! ShowItemViewController 
     detailController.currentId = nextId! 
    } 
} 
+0

funziona come un fascino! grazie compagno! dopo ore, mi ha salvato alcune ore :) – datayeah

+0

Grazie, questa soluzione sembra funzionare bene con swift 3 – mic