2014-11-05 163 views
1

我正在學習新的Swift編程語言,我想知道如何將數據從CollectionViewController傳遞到TableViewController。Swift - 將數據從CollectionView傳遞到TableViewController

我的目標是每次有人點擊CollectionViewController中的一個單元格時,此操作會將它們帶到TableViewController,其中出現與所選單元格相關的圖像列表。

CollectionViewController.swift

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 
    if (segue.identifier == "listSegue") { 
     if let indexPath = self.menuCollection.indexPathsForSelectedItems() { 
      let control = (segue.destinationViewController) as TableViewCell 
      control.cellImage.image = UIImage(named: sectionImages[indexPath]) 
} 

TableViewCell.swift

class TableViewCell: UITableViewCell { 
    @IBOutlet weak var cellImage: UIImageView! 
} 

TableViewController.swift

我一定要在這裏把一些代碼?

請幫助我,我真的很感激它:)謝謝:)

回答

0

似乎極不可能的,segue.destinationViewController返回一個TableViewCell ;-)

應該UITableViewController的一個實例 - 派生類應該是segue的目的地。

我說「UITableViewController-derived」,因爲它需要是您的設計的自定義類,您可以設置公有屬性 - 可能來自所選單元格的值和/或來自您的CollectionViewController的某個其他狀態。

CF

+0

哦,我明白了:)你知道我怎麼能從UITableViewCell訪問我的cellImage變量?我想在我的CollectionViewController中訪問這個變量 – ketokun 2014-11-05 23:18:30

+0

你不能 - 它看起來像你的'TableViewCall'類,因此這就是你必須放在你的'UICollectionView'中 - 這是一個教程(儘管在Objective C):http://skeuo.com/uicollectionview-custom-layout-tutorial – 2014-11-05 23:26:56

0

首先,如果陣列中的數據保持,你需要知道你要傳遞到prepareForSegue的對象。所以你可以創建一個tempVar並在選擇時賦值。其次,您需要創建一個公共API到TableViewCell中,您可以爲其設置值。即

// MARK: Public API 

var objTest: ObjTest! 

您可能需要創建segue.identifier以檢查是否有多個segue。

if segue.identifier == "Your Segue name" { 
     let loginSignupVC = segue.destinationViewController as! 
     YourDestination Controller 
     //do something here 
    } 


func collectionView(collectionView: UICollectionView, didSelectItemAtIndexPath indexPath: NSIndexPath) { 
    object = self.objects[indexPath.item] 
    self.performSegueWithIdentifier("Your segue name", sender: self) 
} 
相關問題