2014-02-11 39 views
0

我有一個帶有五個按鈕的視圖控制器。每個按鈕應觸發模態SEGUE基於按鈕的標籤的不同視圖控制器,通過聲明的常量來表示:iOS Switch語句不起作用?

- (IBAction)aButtonTapped:(UIButton *)sender 
{ 
    [self buttonForSegue:sender]; 
} 

-(void) buttonForSegue:(UIButton *)sender 
{ 

    switch ([sender tag]) 
    { 
     case aVsAButton_tag: 
      [self performSegueWithIdentifier:@"aVsAModal" sender:self]; 
      break; 
     case cVsCButton_tag: 
      [self performSegueWithIdentifier:@"cVsCModal" sender:self]; 
      break; 
     case actVsAllButton_tag: 
      [self performSegueWithIdentifier:@"actVsAllModal" sender:self]; 
      break; 
     case catVsAllButton_tag: 
      [self performSegueWithIdentifier:@"catVsAllModal" sender:self]; 
      break; 
     case customDatePickerButton_tag: 
      [self performSegueWithIdentifier:@"customDatePickerModal" sender:self]; 
      break; 

     default: 
      break; 
    } 
} 

不管我打哪個按鈕,在SIM中的應用程序崩潰與此消息(僅按鈕名稱改變):

2014年2月10日19:11:47.305 WMDGx [24366:A0B] - [ReportViewController aVsAllButton:]:無法識別的選擇發送到實例0x8a911e0 2014年2月10日19:11: 47.307 WMDGx [24366:a0b] * **因未捕獲異常'NSInvalidArgumentException'而終止應用程序,原因:' - [ReportViewController aVsAllButton:]:無法識別的選擇器已發送至實例0x8a911e0'

我的代碼對我來說看起來很合理,但顯然不是。有人可以告訴我我要去哪裏嗎?

謝謝!

+1

此問題對您的switch語句沒有任何影響。崩潰告訴你具體的問題。你在你的'ReportViewController'上調用它不響應的選擇器。您需要顯示代碼調用'aVsAllButton:'選擇器的位置。 –

+0

@傑里米 - 鄧肯C在第二個答案中釘了它。感謝您的迴應! – rattletrap99

回答

1

您報告的錯誤不會由您發佈的代碼引起。我猜你的按鈕中有一個IBAction鏈接,並且該操作方法不再存在。打開故事板文件,爲視圖控制器選擇場景,並使用連接檢查器檢查每個按鈕的操作鏈接。您可能需要中斷連接並將其重新鏈接到適當的IBAction。

+0

賓果!每個按鈕上有多個連接。我從早先的迭代中忘記了他們試圖將每個按鈕單獨掛鉤到一個segue。非常感謝,贊成票和接受的答案! – rattletrap99

0

看起來像這與你的switch語句無關,而是調用一個你的控制器上不存在的函數。

哪行代碼失敗?進入buttonForSegue?在交換機的開始?在performSegueWithIdentifier之一?

可嘗試:

  • 確保發送者實際上是一個UIButton類
  • 確保標籤設置按鈕
  • 檢查是否seguing以實現該方法的視圖控制器aVsAllButton
+0

有關具體解決方案,請參閱下面Duncan C的答案。感謝您的迴應! – rattletrap99