Ios UITableView与自定义单元格子视图一起滚动

Ios UITableView与自定义单元格子视图一起滚动,ios,objective-c,uitableview,Ios,Objective C,Uitableview,我在UITableView滚动时遇到以下问题。 在我的设置中,每个部分有2行,每个部分都有UITableView的完整框架。 如果我在第二个单元格的contentView中添加某个viewController的子视图,如 if (![cell.contentView.subviews containsObject:cell.player.view]) { [cell.contentView addSubview:cell.player.view]; } (此处,cell.player是

我在
UITableView
滚动时遇到以下问题。 在我的设置中,每个部分有
2行
,每个部分都有
UITableView
的完整框架。 如果我在第二个
单元格的contentView
中添加某个
viewController
子视图
,如

if (![cell.contentView.subviews containsObject:cell.player.view]) {
    [cell.contentView addSubview:cell.player.view];
}
(此处,
cell.player
是已初始化的
MPMoviePlayer
控件), 在滚动到下一个
部分
期间,第一个
单元格
将为白色,直到滚动完成

现在,我注意到这与
addSubview
函数有关,因为无论我添加什么视图,它都显示相同的行为。我可以通过实施

-(void)scrollViewWillBeginDragging:(UIScrollView *)scrollView {
     /// detect cell
     [cell.contentView.subviews[0] setHidden:YES];
 }
或者从
ScrollView中的
superview
中将其删除,将使其变为
,但是如果该视图突然消失,则看起来非常奇怪。 它只发生在包含自定义
子视图的
单元格上(对于没有自定义
子视图的
单元格,则
工作顺利)

我的问题是,是否有人知道如何在滚动期间避免出现白色区域,而不在滚动之前删除/隐藏视图

为了获得更好的视觉线索,这里有一个屏幕截图,如果我不添加
子视图

还有一个屏幕截图。请注意,下一个图像是白色的


在我看来,您似乎已经对
UITableViewCell
进行了子类化,并添加了一个名为
player
的属性,即
MPMoviePlayer

我的建议是避免添加来自
UIViewController
控制
tableView
的子视图,而是让单元格自己处理这个问题

UITableViewCell应该管理自己的子视图,理想情况下,数据源不应该参与其中


如果不查看自定义
UITableViewCell
的代码,就很难向您提供关于如何执行此操作的可靠建议,但是,如果您在添加子视图之前等待
MPMoviePlayer
进行初始化,该单元可以很容易地使用KVO或其他方式驱动播放器控件,以确定其初始化时间,然后对其进行操作。

直接修改单元的内容视图可能会导致一些问题。尝试使用可由
播放器设置的自定义UITableViewCell子类。好吧,我确实使用了带有
UIViewController
属性的子类
UITableViewCell
。我试图避免将任何控制器代码放入
UITableViewCell
中,并让
UITableView
/custom
UIViewController
管理单元格中的内容。目前,我在单元格初始化时初始化视图控制器,并在发现单元格不包含子视图时在
cellforrowatinexpath
中添加其子视图。解决方案基本上是将控制器中初始化的所有控件移动到UITableViewCell,正如@infinity james建议的那样。非常感谢。