我有一个名为ProductDetailViewController的自定义UIViewController,它有很多子视图,每个子视图的内容都是由远程服务器请求的数据填充的。
最终可以通过两种方式查看产品详细信息视图:在标签栏控制器的一个选项卡中,您可以浏览到某个产品,然后将其中一个推送到特定于该选项卡的导航控制器的堆栈中,或者您可以扫描条形码的另一个选项卡和ProductDetailViewController被推送到该选项卡中的单独导航控制器。
发生的奇怪事情是,如果您在一个选项卡中有一个产品详细信息,然后在另一个选项卡中添加一个,当您切换回第一个选项卡时,您会看到重叠的重复子视图内容,因为有两个标签/ product images / tableviews在一个视图中相互堆叠。
供参考:
推送到导航控制器堆栈的第二个实例没有任何问题,它始终是第一个发生这种情况的实例,就好像子视图被添加到现有控制器以及新实例中一样。我不认为堆叠有两个完整的产品细节视图 - 视图具有纯色背景颜色,因此它会隐藏下面的视图。我很确定我正在推动独立的导航控制器。起初我想也许传入的数据被发送到两个控制器,但这不会解释UI元素重叠的多个实例。
有人曾经碰到这样的事吗?这对我来说肯定是第一次,这让我疯狂。
重叠产品名称标签子视图的屏幕截图:
答案 0 :(得分:0)
在你的代码中的某个地方你有很多[myview addSubview:anothersubview] 您可能在更新ProductDetailViewController时复制子视图。 在开始填充所有子视图之前尝试插入下一个代码
[[myview subviews] makeObjectsPerformSelector:@selector(removeFromSuperview)];
答案 1 :(得分:0)
问题是,在收到数据之前,实际上并未创建许多子视图,并且应用程序使用NSNotificationCenter来确定何时返回数据以及应该接收哪些类和函数。我本来应该提到最初使用NSNotificationCenter,但我不认为这可能是这类问题。
我将一个字符串作为标识符发送到我的API响应通知类,并通过将所请求的URL连接到我的字符串,将所有ProductDetailViewControllers之间的字符串更改为唯一值,我的问题已经解决。