2010-11-07 54 views
0

嘿,任何人,即时通讯在这里遇到一些麻烦。当我的viewcontroller到达视图时,它会向php发送一些数据。但是...我一直在寻找,并发现viewDidLoad被调用两次。Obj C:只是调用一次动作

那么,我怎样才能调用一次行动?

我知道这是一个noob问题,但我想知道besto方法。

谢谢!

+0

连续两次没有采取任何其他操作? – 2010-11-07 15:17:52

+0

你是如何创建视图的?编程或通过笔尖filw – 2010-11-07 15:27:23

+0

@interface FinalizarViewController:UIViewController { – 2010-11-07 17:27:23

回答

1

它不应该被调用两次。你真的想看看为什么会发生这种情况。

我曾经在UIView之前发生过这种情况。我不记得确切的的原因,但它最终结果 - 我实际上有两个我的UIview的副本运行 - 一个在另一个之上 - 较低的一个是不可见的。

当调用viewDidLoad时,可以通过查看调试器中“self”的值来确定这一点 - 如果它不同 - 这意味着您有两个不同的实例被加载。

如何设置一个私人“布尔”值将无法正常工作的另一项建议 - 因为这些实例UIViews将每个有布尔他们自己私有副本!

我不记得为什么会发生这种情况 - 但我也记得在StackOverflow上看到有人报告同样的问题。它要么与appDelegate创建对象两次有关,要么与XIB中的两个视图副本 - 我记不清了 - 但我记得它只花了几分钟的时间来弄清楚发生了什么事情。

当你在viewDidLoad中设置断点并且它只被命中一次时,你知道它已经不存在了。

如果你真正得到真正吸引 - 你总是可以做亵渎的事情 - 和初始化全球 BOOL为“假”,并做了检查和设置的东西与它 - 但这只会隐藏现实问题在手。

+0

是的,我该怎么做? – 2010-11-07 18:42:40

+0

你怎么办*什么*? – Brad 2010-11-07 18:51:45

+0

“如果你真的被抓住 - 你总是可以做出亵渎神明的事情 - 并将全局布尔初始化为”假“,然后做检查并设置它 - 但这只会隐藏真实问题。” – 2010-11-07 18:56:22

0

在您的viewController中创建一个私有的BOOL值,该值指示是否已创建该请求,如果尚未创建,请获取数据,并将该值设置为YES

+0

可能不会工作 - 只是掩盖了问题。详情请参阅我的回答。 – Brad 2010-11-07 15:03:03