2015-04-04 202 views
1

我正在使用OS X 10.10的Xcode 6。如何設置UISegmentedControl的初始選擇

以我的UIViewController我有一個UISegmentedControl具有兩個段的出口:

@property (strong, nonatomic) IBOutlet UISegmentedControl *cardModeButton; 

在作爲使能和選擇我標記段0的IB。

IB Attributes Inspector with Segment 0 Enebled and Selected

然而,

self.game.nCardGame = self.cardModeButton.selectedSegmentIndex 

返回nil。

試圖以編程方式設置選擇也沒有幫助。

self.cardModeButton.selectedSegmentIndex = 0; // or 
[self.cardModeButton setSelectedSegmentIndex:0]; 

在任何情況下調試器顯示該值未設置。

(lldb) po self.cardModeButton.selectedSegmentIndex 
<nil> 

觸摸按鈕按預期工作。然而,在任何按鈕被觸摸之前,應該有一個明確定義的初始狀態。何那麼做?

+0

你在viewController的viewDidLoad方法中設置self.game.nCardGame = self.cardModeButton.selectedSegmentIndex? – wildBillMunson 2015-04-04 12:55:31

+0

@wildBillMunson不,我不會。這是一款紙牌遊戲,遊戲已經開始。在翻轉第一張牌之後,檢查cardMode的選擇。這意味着,在這個時間點,所有的類都已經被正確實例化並且變量被分配了。 – 2015-04-04 13:11:01

+0

什麼是self.game.nCardGame? – 2015-04-04 13:12:32

回答

3

假設您的斷點是viewDidLoad或之後,我相信調試器可能會誤導您。由於selectedSegmentIndex是一個NSInteger,「po」(打印對象)命令應該會給你一個錯誤。它似乎取零值並將其視爲零指針。

使用「p(NSInteger)self.cardModeButton.selectedSegmentIndex」查看該值。