В настоящее время я сталкиваюсь со странной проблемой с UICollectionViewCell при добавлении к нему подвидов, но только в определенных ситуациях.
Вот сценарий:
У меня есть представление «контейнера», которое соответствует очень специфическому протоколу (ADGControl) с вложенным представлением, обычно подклассом управления UIKit I.e MyCustomTextField: UITextField для пользовательских элементов управления.
Представление «контейнер» предоставляет свойство под названием «innerControlView», которое содержит сильную ссылку на настраиваемый элемент управления, который я пытаюсь добавить в качестве подпредставления к представлению содержимого ячейки.
Вот код:
- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
{
FormControlCollectionViewCell *cell = [self.formCollectionView dequeueReusableCellWithReuseIdentifier:@"formControlCell" forIndexPath:indexPath];
NSArray *sectionContents = [_controlList objectAtIndex:[indexPath section]];
// This works
//UITextField *textField = [[UITextField alloc] initWithFrame:CGRectMake(0.0f, 0.0f, 315.0f, 30.0f)];
//textField.borderStyle = UITextBorderStyleLine;
//[cell.controlView addSubview:textField];
// This doesn't (see the behaviour in video clip)
id <ADGControl> control = [sectionContents objectAtIndex:[indexPath row]]; // The container view I'm referring to
[cell.contentView addSubview:(UIView *)[control innerControlView]]; // [control innerControlView] is the typical UIKit control subclass for custom controls. In this example it will be a UITextField
return cell;
}
Как вы можете видеть в комментариях к коду выше, всякий раз, когда я пытаюсь добавить только элемент управления UIKit (textField) напрямую, он работает просто отлично. Однако, как только я пытаюсь добавить свой пользовательский элемент управления ([control innerControlView], я получаю неожиданное поведение, как показано в видеоклипе здесь: http://media.shinywhitebox.com/ryno-burger/ios-simulator-ios-simulator-ipad-ios-a
Приведенная выше ссылка представляет собой всего лишь короткий 23-секундный видеоклип, чтобы лучше продемонстрировать «неожиданное поведение», которое я получаю.
Если кто-нибудь может указать, что я делаю неправильно, в чем может быть проблема, я буду благодарен.
Спасибо