我在UITableView
滚动时出现以下问题。
在我的设置中,有2 rows per section
,每个部分都采用UITableView
的完整帧。
如果我向第二个subview
添加viewController
部分cell's contentView
,例如
if (![cell.contentView.subviews containsObject:cell.player.view]) {
[cell.contentView addSubview:cell.player.view];
}
(此处cell.player
是已初始化的MPMoviePlayer
控件,
在滚动到下一个section
期间,第一个cell
将为白色,直到滚动完成。
现在,我注意到这与addSubview
函数有关,因为无论我添加什么视图,它都会显示相同的行为。我可以通过实施
-(void)scrollViewWillBeginDragging:(UIScrollView *)scrollView {
/// detect cell
[cell.contentView.subviews[0] setHidden:YES];
}
或将其从superview
中的scrollViewWillBeginDragging
中移除,但是,如果视图突然消失,则看起来很奇怪。
它只发生在包含自定义cells
的{{1}}上(如果没有它,则为subview
,它
工作顺利)。
我的问题是,有没有人知道在滚动过程中如何避免白色区域,而不是在滚动之前删除/隐藏视图?
为了获得更好的视觉线索,如果我不添加cells
,请在此处显示正确行为的屏幕截图:
以及带有视图的屏幕截图。请注意,下一张图片为白色
答案 0 :(得分:0)
在我看来,好像你已经将UITableViewCell
子类化了,并添加了一个名为player
的属性MPMoviePlayer
。
我的建议是避免添加控制UIViewController
的{{1}}中的子视图,并实际让单元格自行处理。
UITableViewCell应该管理它自己的子视图,理想情况下,数据源不应该参与其中。
如果您没有看到自定义tableView
的代码,那么很难为您提供有关如何执行此操作的明确建议,但是,如果您正在等待UITableViewCell
初始化在添加子视图之前,单元格可以很容易地使用KVO或其他一些方式来驱动玩家控件以找出它何时初始化,然后对其进行操作。