我目前在向 UICollectionViewCell 添加子视图时遇到了一个奇怪的问题,但仅在某些情况下。
这是场景:
我有一个“容器”视图,它符合带有嵌套视图的非常特定的协议 (ADGControl),通常是 UIKit 控件子类,即 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-模拟器-ipad-ios-a
上面的链接只是一个简短的 23 秒视频剪辑,以更好地展示我得到的“意外行为”。
如果有人能指出我做错了什么问题可能是什么,我将不胜感激。
谢谢