2012-09-04 67 views
0

我有一些UISegmentSwitch的代碼,但它不起作用。UisegementSwitch不能正常工作

代碼:

- (IBAction)seg:(id)sender { 
switch (segSwitch.selectedSegmentIndex) { 
    case 0: 
     NSLog(@"test1"); 
     break; 

    case 1: 
     NSLog(@"Testy"); 
     break; 

    default: 
     break; 
} 
} 

Ofcourse一切聲明和連接。

在此先感謝

+0

控件是否顯示在屏幕上?當您點擊不同的片段時,控件是否會改變狀態?如果你在你的方法中設置了一箇中斷點,中斷點是否會被擊中?試着用'[sender selectedSegmentIndex]'替換'segSwitch.selectedSegmentIndex',看看你是否得到不同的結果。 – dasblinkenlight

回答

0

嘗試做這種方式

- (IBAction)seg:(id)sender { 

     UISegmentedControl *yourSegCtrl=(UISegmentedControl *)sender; 

     switch (yourSegCtrl.selectedSegmentIndex) { 
      case 0: 
       NSLog(@"test1"); 
       break; 

      case 1: 
       NSLog(@"Testy"); 
       break; 

      default: 
       break; 
     } 
} 

也確保您的分段控制連接到IBAction爲

1

我從來沒有聽說過一個UISegmentSwitch的,但我會假設你在談論一個UISegmentedControl。

嘗試在switch語句中放置一個斷點以查看seg:方法是否被調用。它不是,那麼你沒有正確地將該方法連接到UISegmentedControl。這很容易解決,但你必須展示更多的代碼。

您應該使用sender.selectedSegmentIndex而不是segSwitch.selectedIndex。 NS記錄switch語句之前的值(或者在調試器中檢查它)以查看您是否獲得了您期望的值。


爲什麼不能調用該方法有幾種可能性。我認爲西里爾建議的可能是一個。

首先,確保您的控件實際上正在觸及。當您點擊不同的細分時,選定的細分會發生變化嗎?如果沒有,比你控制的可能沒有觸及。檢查以確保控件及其超級用戶的userInteractionEnabled設置爲YES。其次,在故事板中選擇您的分段控制器,打開Xcode檢查器窗口,然後選擇檢查器窗口頂部的最後一個(第6個或最右邊)選項卡。在這裏你會看到什麼事件被連接到什麼方法。發送事件應該是Value Changed,它應該連接到File's Owner seg :.

您也可以檢查以確保File's Owner設置爲正確的View Controller。

+0

IBAction開始處的​​斷點不起作用,因此它沒有正確連接。如何管理將IBAction連接到Storyboard中的SegmentControl,但它不起作用? – Sjors

+0

查看最新的答案。 – Darren

3

你有沒有有線的IBAction爲以「價值的確發生了變化」插槽,或「接觸在裏面「?您需要爲UISegmentedControls註冊「值已更改」。