Objective c 将子视图添加到未显示的uiview

Objective c 将子视图添加到未显示的uiview,objective-c,ios,uiviewcontroller,Objective C,Ios,Uiviewcontroller,我正在处理一个奇怪的问题:我有一个UIViewController来处理通过inapp购买下载的项目列表 当用户选择要购买的产品时,所有的购买流程开始。在这个特殊的时刻,我按下UILabel和进度条来显示下载的当前状态 如果在此之前,用户选择进入应用程序的另一部分(即通过点击选项卡栏菜单中的一个项目),应用程序将继续从那里开始购买过程(这可以简化为对几个对话框说“是”并输入itunes store帐户凭据) 进程(连接到后台线程)平稳运行,直到结束,但如果用户返回到商店视图,UILabel和进度

我正在处理一个奇怪的问题:我有一个UIViewController来处理通过inapp购买下载的项目列表

当用户选择要购买的产品时,所有的购买流程开始。在这个特殊的时刻,我按下UILabel和进度条来显示下载的当前状态

如果在此之前,用户选择进入应用程序的另一部分(即通过点击选项卡栏菜单中的一个项目),应用程序将继续从那里开始购买过程(这可以简化为对几个对话框说“是”并输入itunes store帐户凭据)

进程(连接到后台线程)平稳运行,直到结束,但如果用户返回到商店视图,UILabel和进度条不会显示,我的意思是,它们已初始化并正在运行,但不可见

在那种情况下有没有正确的行为方式

我必须强制刷新视图,还是必须从superView中删除它们并再次将它们推回

提前感谢,, 希望我说得够清楚,否则别害怕问,我很乐意 用更深刻、更清楚的方式解释我自己


-k-

您好,Phix您没有发布任何代码,因此很难判断
当你返回视图时,Uilabel和进度条的对象似乎被释放。

如果没有代码,很难给出准确的解决方案

一种可能性是,当您从原始UIViewController移出时,系统确实卸载了该控制器上的视图。通过此卸载,进度条和标签可能没有被破坏(因为视图控制器保留了过多的内容,或者在viewDidUnload方法中没有为零),但是当您再次输入视图控制器时,视图被重新加载(通常从nib)并带有新的进度和标签

因此,正确的做法是保留进度条和标签(即使有更好的方法实现相同的结果),但必须将它们添加到viewDidLoad方法中的视图控制器视图中。一种典型的方法是将“活动”进度条存储在字典中,当视图从nib重新加载时,必须将其添加到字典中。下载完成后,您就可以从字典和视图中删除进度。还有其他方法可以达到同样的效果,所以我的建议只是给你一个想法


因此,为了查看我的答案是否正确,您必须检查ViewDiUnload方法,在其上添加一个断点,并在触发后以及返回原始视图时查看进度条是否消失。

我没有发布任何代码,因为这不是代码问题,只是逻辑问题,无论如何:uilabel和progressbar都没有发布,因为进度条是委托给self的,我有一个方法,负责制作一个NSLog,告知进度条本身的进度,即使我不在“Store”UIView中,我也可以读取它,代码真的是一团糟,但是如果你觉得可以的话,你认为这可能会对你有所帮助,我会帮你贴出来。无论如何谢谢你!是的,我得到了图片,元素被保留了,因为下载完成后我会自己释放它们,所以我会尝试在viewDidLoad中再次将它们放回视图中。特克斯库尔做到了,更准确地说,我必须让它出现在视图中,但它确实起了作用。thx一吨!