2010-11-07 57 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