2012-01-08 64 views
0

我有一个名为ProductDetailViewController的自定义UIViewController,它有很多子视图,并且每个子视图的内容由远程服务器请求的数据填充。尽管单独的导航控制器重叠UIViewController子视图内容

您可以通过两种方式查看产品详细信息视图:在选项卡栏控制器的一个选项卡中,您可以浏览到某个产品,然后将其推入特定于该选项卡的导航控制器堆栈中,或者在另一个选项卡中,您可以扫描条形码,并且ProductDetailViewController被推送到该选项卡内的单独的导航控制器上。

发生奇怪的是,如果你有一个产品细节了在一个选项卡,然后将一起来在另一方面,当你切换回第一个标签,你看到重叠重复子视图的内容,如在有两个标签/产品图片/桌面视图在一个视图中堆叠在一起。

FYI:

什么事也没发生错误和你推到导航控制器堆栈中的第二个实例,它总是第一个出现这种情况到,好像子视图加入到现有的控制器,以及新实例。我不认为有两个完整的产品细节视图正在堆叠 - 视图有一个坚实的背景色,所以它会隐藏下面的一个。我很确定我正在推动单独的导航控制器。起初,我想也许传入的数据被发送到两个控制器,但这不会考虑多个UI元素重叠的情况。

有没有人有没有遇到过这样的事情?这对我来说肯定是第一次,而且这让我疯狂。

重叠的产品名称标签子视图的屏幕截图:

overlapping text in product name field

+0

这个问题将从显示正在发生的事情的小截图中受益匪浅。 – dasblinkenlight 2012-01-08 02:39:33

+0

确定完成。我无法展示更多,因为这是一个已经发布的应用程序,从技术上讲不属于我的财产。我最初构建了应用程序,它经历了QA,而我只是发现了这个错误(据我所知,可能是iOS5特有的,但是一旦我有了测试设备,就会进行测试)。 – Project707 2012-01-08 11:15:34

回答

0

某处在你的代码中有很多[MyView的addSubview:anothersubview]当你更新ProductDetailViewController 也许你复制子视图。 尝试插入一个代码之前ü开始填充所有子视图

[[myview subviews] makeObjectsPerformSelector:@selector(removeFromSuperview)]; 
+0

我不确定我关注。子视图在创建时被添加到productDetailViewComtroller的新实例中。这应该是一个独立于其他实例的过程。然后我再次意识到由于数据异步获取而导致延迟,所有这些控制器的通知可能都是相同的,并且在数据到达时添加子视图。这可能会导致这个问题... – Project707 2012-01-09 17:05:54

0

的问题是,许多子视图实际上并没有建立,直到接收到的数据和应用程序利用NSNotificationCenter来确定数据何时有已经返回,什么类和功能应该收到它。我应该提到最初使用NSNotificationCenter,但它并没有想到它可能是这种类型的问题。

我向我的API响应通知类中发送一个字符串作为标识符,并通过将所有ProductDetailViewController之间的相同更改为通过将请求的URL连接到我的字符串的唯一值,我的问题已得到解决。

相关问题