2014-11-05 3 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.

сравни

+0

Ohhh Я понимаю :) И знаете ли вы, как я могу получить доступ к переменной cellImage из UITableViewCell? Я хочу получить доступ к этой переменной в моем CollectionViewController – ketokun

+0

Вы не можете - похоже, что это специфично для вашего класса TableViewCall, так вот что вы должны добавить в свой 'UICollectionView' - вот учебник (хотя в Objective C): http://skeuo.com/uicollectionview-custom-layout-tutorial –

0

Во-первых, если ваши данные остаются в массиве вы должны знать объект, который вы хотите передать в prepareForSegue. Таким образом, вы можете создать tempVar и присвоить значение при выборе.

private var testObj: TestObj! 
func collectionView(collectionView: UICollectionView, didSelectItemAtPath indexPath: NSIndexPath){testObj = self.testObjects[indexPath.item]} 

Во-вторых, вам нужно собрать открытый 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) 
} 
Смежные вопросы