2015-03-02 4 views
0

В моем приложении у меня есть custom CollectionViewCell. Назовем его customCell. Этот customCell содержит один заголовок, один imageView и две кнопки. Назовем его tlLbl, imgView, btn1 и btn2.Custom CollectionViewCell кнопка управления нажатием

Goal: Если я нажму на одну из кнопок, я бы хотел представить новый viewController. Этот новый viewController должен получить tlLbl и параметр imgView как параметр. Мне нужны оба, потому что я покажу ярлык и изображение в новом viewController.

Рассмотрение: Чистым решением было бы представить новый viewController в классе customCell. Передача параметров здесь не будет проблемой. Но изменить виды в классах customCell невозможно.

Хорошо, это не имеет значения. Следующее решение. Я могу обрабатывать нажатые кнопки в текущем viewController. Добавление GestureRecognizer в функции делегата collectionView «cellForItemAtIndexPath» для btn1 и btn2 должно решить эту проблему. О нет, это не решает проблему. Мой текущий код:

override func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell { 
    let customCell:customCellClass = collectionView.dequeueReusableCellWithReuseIdentifier("customCell", forIndexPath: indexPath) as customCellClass 

    customCell.tlLbl.text="Test1" 
    customCell.imgView.image=UIImage(named: "myImg.png") 

    var tapRec = UITapGestureRecognizer(target: self, action: "btnTapped") 
    var tapRec2 = UITapGestureRecognizer(target: self, action: "btnTapped2") 

    customCell.btn1.addGestureRecognizer(tapRec) 
    customCell.btn2.addGestureRecognizer(tapRec2) 

    return customCell 
} 

//Btn tapped handler 
func btnTapped() { 
    let vc = newViewController() //change this to your class name 
    self.presentViewController(vc, animated: true, completion: nil) 
} 

func btnTapped2() { 
    let vc = newViewController2() //change this to your class name 
    self.presentViewController(vc, animated: true, completion: nil) 
} 

Вопрос: Как я могу передать tlLbl и imgView от customCell к новому ViewController после нажатия кнопки в customCell. Параметр действия в UITapGestureRecognizer

var tapRec = UITapGestureRecognizer(target: self, action: "btnTapped") 

не позволяет передавать свои параметры.

Мне нужна помощь. Puh ...

+0

Можете ли вы поделиться кодом UICollectionViewDataSource? Это поможет решить эту проблему. - Dipak –

+0

Источник данных уже доступен? Вы имеете в виду функцию cellForItemAtIndexPath? – infinity

+0

numberOfItemsInSection и numberOfSectionsInCollectionView –

ответ

0

Я использую только метод numberOfItemsInSection. Он возвращает количество jsonFiles.

func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { 
    return jsonParsedArr.count 
} 

jsonParsedArr - это массив с содержимым json.

Для customCell я создал файл nib, зарегистрированный в "viewDidLoad".

Смежные вопросы