2014-11-15 32 views
33

Verileri bir viewController'dan diğerine aktarmaya çalışıyorum. Bir ViewController navigationController'a viewController bağladıktan sonra tanımlayıcıyı "showItemSegue" olarak ayarladım. Bu iki satır bir hata:Gezinme yoluyla gezinme ile geçiş verileriController

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

Görüntü örnekleme:

enter image description here

kodu:

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

bir cazibe gibi çalışır –

cevap

62

segue hedef görünüşüdür kontrol UINavigationController olup. Gerçek hedef görünümü denetleyicisi almak için onun üstten görünüm denetleyicisi için sormak gerekir:

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

tam hata mesajını göndermek edin! teşekkürler dostum! saat sonra, beni birkaç saat kurtardı :) – datayeah

+0

Teşekkürler, bu çözüm hızlı 3 ile iyi çalışıyor gibi görünüyor – mic