2014-11-15 12 views
33

Próbuję przesłać dane z jednego kontrolera viewController do innego. Połączyłem viewController z innym kontrolerem ViewController's navigationController, a następnie ustaw identyfikator na "showItemSegue". I pojawia się błąd w tych dwóch liniach: ilustracjaPrzekazywanie danych z przełącznikiem przez nawigacjęController

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

Obrazek:

enter image description here

Kod:

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

Proszę napisać pełny komunikat o błędzie –

Odpowiedz

62

Docelowy widok kontrolerem segue jest UINavigationController. Musisz poprosić go o kontroler widoku z góry, aby uzyskać dostęp do kontrolera widoku docelowego:

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

działa jak urok! dzięki stary! po godzinach zaoszczędziło mi to kilka godzin :) – datayeah

+0

Dzięki, to rozwiązanie wydaje się działać dobrze z szybkim 3 – mic