2013-03-10 8 views
4

Вопрос об ответе https://stackoverflow.com/a/13555814/1678391 ответил на вопрос об установке элементов с переменным размером в UICollectionViewController. Я пытаюсь понять, как это сделать с объектом UICollectionView, содержащимся в UIViewController. GetSizeForItem - это то, что мне нужно, но не вижу, где его получить.Размеры ячеек UICollectionView

Моя реализация добавляет UICollectionView моему UIViewController через Xcode. В моем коде я делаю следующее:

public partial class CustomViewController : UIViewController 
{ 
    public override void ViewDidLoad() 
    { 
     collectionView.RegisterClassForCell(typeof(MyCell), cellId); 
    } 

    public override void ViewWillAppear(bool animated) 
    { 
     collectionView.Source = new CollectionViewSource(items, cellId); 
    } 

    class CollectionViewSource : UICollectionViewSource 
    { 
    } 

    class MyCell : UICollectionViewCell 
    { 
    } 
} 

ответ

1

По http://docs.go-mono.comGetSizeForItem доступен только для UICollectionViewDelegateFlowLayout класса.

Чтобы использовать этот метод, вы должны реализовать подкласс UICollectionViewDelegateFlowLayout и рассказать ему об Delegate свойстве UICollectionViewController. Example.

+1

Хотя я не использую UICollectionViewController. Просто UICollectionView в UIViewController. Установлен ли размер только при использовании UICollectionViewController? Спасибо – Vincent

+0

Вы можете (http://stackoverflow.com/questions/14291889/how-can-we-use-uicollectionview-without-an-uicollectionviewcontroller). Попробуйте установить второй параметр в конструкторе 'UICollectionView' или позже установите свойство' CollectionViewLayout' 'UICollectionView'. –

+0

Кажется, что вызов вызывающего подкласса делегата невозможен. flowLayoutDelegate = новый CollectionViewDelegateFlowLayout(); lineLayout = new CollectionViewFlowLayout(); коллекцияView.RegisterClassForCell (typeof (MyCell), CellId); коллекцияView.CollectionViewLayout = lineLayout; collectionView.Delegate = flowLayoutDelegate; – Vincent