У меня есть пользовательский UICollectionViewCell
, который имеет пользовательский фоновый вид, который нарисован с использованием одной из нескольких цветовых схем. Цветовая схема для фонового представления задана в моем пользовательском инициализаторе -(id)initWithFrame:andColourPalette:
для представления.Инициализация пользовательского UICollectionViewCell
У меня есть подобный пользовательский Инициализатор в моем UICustomViewCell
подкласса, но я не могу понять, как назвать этот Инициализатор, когда я настройка ячейки в cellForItemAtIndexPath:
Может кто-нибудь помочь мне сделать это? Или предложите альтернативное решение для передачи этого Словаря цветов в ячейку, чтобы перейти к subView?
EDIT, чтобы показать более подробно:
Это то, что у меня в UICollectionView VC:
В ViewWillAppear:
[self.collectionView registerClass:[OPOLawCollectionViewCell class] forCellWithReuseIdentifier:CELL_ID];
self.colourPalette = [OPOColourPalette greenyColourPalette];
В cellForItemAtIndexPath:
UICollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:CELL_ID forIndexPath:indexPath];
OPOLawCollectionViewCell *lawCell = (OPOLawCollectionViewCell *)cell;
MainLevel *level = self.collectionData[indexPath.row];
lawCell.delegate = self;
lawCell.colourPalette = self.colourPalette;
В моем пользовательском UICollectionV iewCell
- (id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self)
{
// get background view
OPOLawBook *lawBookView = [[OPOLawBook alloc]initWithFrame:CGRectMake(0, 0, 200, 265) andColourPalette:self.colourPalette];
Но это не сработает - я думаю, потому что свойства не настроены.
Если изменить последнюю строку на это, то он работает отлично:
OPOLawBook *lawBookView = [[OPOLawBook alloc]initWithFrame:CGRectMake(0, 0, 200, 265) andColourPalette:[OPOColorPalette greenyColorPalette]];
Так я думаю, мне нужно использовать пользовательские intialiser здесь, но я не могу понять, как это назвать, или откуда. ..
Благодаря
Я делаю это уже, но мне нужно сообщить ячейке, какой цвет рисовать фоновой графикой. Если я поместил свойство в ячейку для colourPalette, а затем установил его в cellForItemAtIndexPath: это не работает, потому что свойство не настроено до того, как ячейка рисует его фон. Поэтому я думаю, что мне нужно переопределить initWithFrame: поэтому он использует мой метод initWithFrame: andColourPalette:. – Bertie
Я поставил немного кода в вопросе, чтобы дать более подробно – Bertie
, вы не должны делать ничего связанного с индексом ячейки при инициализации. Вы должны иметь возможность выполнить эти настройки после удаления ячейки. – Tala