在未显示的uiview中添加子视图

时间:2012-03-27 16:45:13

标签: objective-c ios uiviewcontroller

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

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

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

进程(附加到后台线程)运行顺利直到它结束,但是如果用户回到商店视图,UILabel和进度条没有显示,我的意思是,它们被初始化并运行但它们不可见。

在这种情况下,是否有正确的行为方式?

我是否必须强制刷新视图,或者我是否必须从superView中删除'em并再次推送回来?

提前谢谢, 希望我能够清楚,否则不要害怕问,我会很高兴的 以更加深刻和清晰的方式解释自己。

-k -

2 个答案:

答案 0 :(得分:2)

如果没有代码,很难为您提供准确的解决方案。

可能的情况是,当您从原始的UIViewController移出时,系统会卸载该控制器上的视图。有可能通过此卸载,进度条和标签未被销毁(因为视图控制器过度保留或未在viewDidUnload方法中为nil-ed)但是当您再次进入视图控制器时,视图从头开始重新加载(通常来自笔尖)有新的进展和标签。

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

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

答案 1 :(得分:0)

Hello Holographic你没有发布任何代码所以很难说好像Uilabel和进度条的对象在你回到视图的时候被释放了。