2013-02-04 29 views
6

我在靜態UITableView上使用UISwitch時遇到了一些麻煩。 當應用程序加載時,我必須恢復某個UISwitch的最後一個狀態,但每當我檢查IBOutlet的狀態時,它都是零。我試圖手動分配變量,這也沒有幫助。在iOS 6.1上,UISwitch IBOutlet始終爲零

下面是我在做什麼:

SettingsController.h

//IBOutlet connected correctly 
@property (strong, nonatomic) IBOutlet UISwitch *switch_displayDetail; 

SettingsController.m

- (void)viewWillAppear:(BOOL)animated { 
    [super viewWillAppear:animated]; 

    if (!_switch_displayDetail) { 
     NSLog(@"_switch_displayDetail is NIL"); //This is always displayed 
    } 

    //Switch is default to YES, I am trying to set it to NO 
    //This line does nothing... 
    [_switch_displayDetail setOn:[dataManager shouldDisplayDetail] animated:YES]; 
} 

在其他地方當我檢查的_switch_displayDetail狀態是零。我打電話給所有的超級初始化方法。 iOS 6.1有什麼變化嗎?

[編輯]使用合成變量也不起作用。

[編輯2]發現問題是在Xcode或iPhone模擬器上的錯誤。在我的iPod touch上進行測試後,初始算法運行良好。

我要瘋了這個問題...

+0

檢查你是否在SettingsController上執行'initWithNibName'而不僅僅是'init' – Sathya

+0

同時檢查你是否正確地拼寫了筆尖名稱。 – Fogmeister

+0

嘗試self.switch_displayDetail而不是_switch_displayDetail –

回答

1

感謝大家的回答,但在幾乎放棄之後,我在我的iPod touch上測試了我的應用程序,並且完美運行。這看起來像iPhone模擬器上的錯誤,或者很可能是Xcode上的一個錯誤(這裏沒有新東西)。在iPhone Simulator菜單中重置所有設置和數據後,它也在那裏工作。

因此,在發瘋之前,在真實設備上測試您的應用程序。

+1

重置模擬器中的設置和數據對我來說也是如此。此外,我也在iOS 6.0上體驗過這一點。 – Frost

1

我知道第一手的暮光區問題,怎麼折騰都可以。顯然有很少的信息可以診斷,但我想我會分享我如何進行調試。

  1. 覆蓋了switch_displayDetail二傳手,在那裏,記錄的價值,但也self
  2. 然後在viewWillAppear,登錄同樣的事情

我,我們不是在談論同樣的感覺實例在這裏。如果我是對的,二傳手會顯示一個值,但不是viewWillAppear。如果我錯了,那麼兩者都將是零,在這種情況下,要麼你沒有調用正確的init方法,要麼你的鏈接在IB中不正確。

只是我的兩分錢。

+0

謝謝。我想到了同樣的事情。我會嘗試這個並在這裏發佈結果。 –

-1

第一:

@property (strong, nonatomic) IBOutlet UISwitch *switch_displayDetail; // should be a weak property 

,然後讓你@synthesized你的財產?

+0

在iOS 6.0上不需要合成屬性 –