2015-01-23 4 views
0

Очень простой вопрос о модели-view-controller (MVC).UICollectionView: изменить размерForItemAtIndexPath из пользовательской ячейки

У меня есть пользовательский UICollectionView, заполненный пользовательским UICollectionViewCells. Представление коллекции определяет размер ячеек в методе UICollectionViewDelegateFlowLayout, collectionView: sizeForItemAtIndexPath. Между тем, subviews добавляются и удаляются через контроллер коллекции сокетов.

Мой вопрос: как добавить или удалить подпункты из контроллера вида ячеек, как я могу также сообщить контроллеру представления коллекции изменить высоту?

Я понимаю понятия делегата и источника данных, но считаю, что ячейка является ее собственным делегатом, поэтому как сообщение («изменить высоту ... ...») передается из ячейки в контроллер представления коллекции, когда subviews добавляются/удаляются?

+0

Я думаю, что вы добавляете или удаляете subviews в функции datasource> cellForItemAtIndexPath там, вы можете вручную изменить раму ячейки, и она будет работать –

+0

@Muhammad. Я добавляю и удаляю subviews, которые находятся внутри ячеек внутри контроллера ячейки. Я хочу, чтобы каждая ячейка вела себя независимо друг от друга. Затем я хочу изменить высоту конкретной ячейки внутри контроллера коллекции. – DrWhat

+0

Я хочу сказать, что там, где вы добавляете или удаляете subviews, вы можете обновить фрейм этой конкретной ячейки, используя cell.frame –

ответ

1

Вы пытались использовать уведомления центра,

[[NSNotificationCenter defaultCenter] postNotificationName:@"AddedSubViewToCell" object:self]; 

и в коллекции зрения контроллера viewDidLoad,

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(addedSubViewToCell:) name:@"AddedSubViewToCell" object:nil]; 

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

- (void)addedSubViewToCell:(NSNotification:)notificationObject 
{ 
    //change frame of collection view 
    //don't forget to remove observer 
} 

Для подробного объяснения относительно NSNotificationCenter, См. Это Tutorial

Надеюсь, это поможет. Thanks

+0

Прохладный! Это работает и открывает целый мир возможностей для изучения. Я нашел это [описание базового кода для Центра уведомлений] (http://www.andrewcbancroft.com/2014/10/08/fundamentals-ofnnsificationcenter-in-swift/), и это немного более подробное объяснение того, как [передать параметры между VC с центром уведомлений] (http://dev.iachieved.it/iachievedit/nsnotifications-with-userinfo-in-swift/). – DrWhat

+0

Приятно слышать, что .. Спасибо @ DrWhat – Saif

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