2015-05-29 2 views
0

Я подклассифицировал CollectionViewCell, я добавлял разные метки, анимации и кнопки.Как получить доступ к коллекцииView из другого класса в Swift

Я пытаюсь удалить ячейку и обновить collectionView в одном из моих методов в этом классе (CollectionViewCell), но я не могу получить доступ к коллекцииView здесь, так как он был объявлен в другом классе/viewController.

Мои CollectionView Класс:

//this is how I have declared the collectionView. 
class FirstViewController: UIViewController, UICollectionViewDataSource, UICollectionViewDelegate { 

@IBOutlet weak var collectionView: UICollectionView! 
} 

Мои CollectionViewCell Класс:

//this is what I'm trying to achieve although I know it's incorrect. 
class CollectionViewCell: UICollectionViewCell { 

func handlePanGesture(recognizer: UIPanGestureRecognizer) { 

FirstViewController.collectionView.reloadData()// 

    } 
+0

Было бы лучше сделать контролер целью распознавателя жестов. Класс ячейки не должен знать о представлении коллекции и не должен нести ответственность за удаление ячейки - это задача контроллера. – rdelmar

ответ

1

Как @rdelmar говорит, что это лучше делать положить panGestureRecognizer в контроллер.

Тогда вы можете получить доступ к indexPath с collectionView.indexPathForItemAtPoint(recognizer.locationInView(collectionView))

В противном случае, вы можете использовать NSNotificationCenter с:

NSNotificationCenter.defaultCenter().postNotification(name: "CellPanned", object: recognizer)

и в контроллере

NSNotificationCenter.defaultCenter().addObserver(self,selector:"cellPanned:" name: "CellPanned")

, а затем реализовать:

func cellPanned(notification:NSNotification) { 
    let gestureRecognizer = notification.object as! UIPanGestureRecognizer 
    // Handle pan 
} 
+0

hm, я не могу поместить распознаватель жестов в FirstViewController, потому что распознаватель использует некоторые NSLayoutConstrains, объявленные и подключенные в этом классе. Я попробую второй вариант и отправлю обратно. –

+0

Похоже, что он работает, но как мне получить доступ к indexPath в func cellPanned (уведомление: NSNotification) {}? –

+0

Точно так же, как метод 1: collectionView.indexPathForItemAtPoint (распознаватель.locationInView (collectionView)) – flovilmart

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