2012-01-17 73 views
2

我正在使用故事板並將滾動視圖窗口拖到視圖上。在我的代碼中,我以編程方式創建了一個開關對象,該對象以某種方式未被正確初始化。該交換機上的看法似乎正確,但每當我點擊開關,拋出一個異常說以編程方式將開關添加到滾動視圖拋出異常

「無法識別的選擇發送到實例0x6a786f0' 」

我也試圖編輯開/關文本是/否,訪問交換機也會引發相同的異常。顯然,我錯過了創建我的開關和設置正確的代表或其他任何東西。

我的代碼來創建開關..

 UISwitch *switchControl = [[UISwitch alloc] initWithFrame:CGRectMake(x, y, 60, 20)]; 
     [switchControl addTarget:inputsView action:@selector(actionSwitch:) forControlEvents:UIControlEventTouchUpInside]; 
     [switchControl setBackgroundColor:[UIColor clearColor]]; 
     //[(UILabel *)[[[[[[switchControl subviews] lastObject] subviews] 
     //    objectAtIndex:1] subviews] objectAtIndex:0] setText:@"Yes"]; 
     //[(UILabel *)[[[[[[switchControl subviews] lastObject] subviews] 
     //    objectAtIndex:1] subviews] objectAtIndex:1] setText:@"No"]; 


     [inputsView addSubview:switchControl]; 

inputsView是我的UIScrollView,我在我的.h文件中創建的名稱。

我應該注意到,當點擊開關調用異常時,在錯誤中'reason'是原因:' - [UIScrollView actionSwitch:]。當通過嘗試調整文本調用錯誤時,「原因」就是原因:' - [UIImageView setText:]

對我所缺失的任何幫助都會很棒。

感謝

回答

2

唯一的例外是正確的,UIScrolView沒有一個方法actionSwitch:addTarget:中的目標參數是您想要接收參數selector:的對象。

如果您發佈的代碼是在具有actionSwitch:方法,那麼你會用自己的目標,像這樣的類:

[switchControl addTarget:self action:@selector(actionSwitch:) forControlEvents:UIControlEventTouchUpInside]; 

而作爲一個方面說明。對於UISwitch,你通常希望你的方法調用UIControlEventValueChanged,這樣,如果用戶只是觸摸開關,但不「切換」它,你的方法將不會被調用。

編輯回覆爲:「我只是試圖改變'自我'的UISwitch,錯誤仍然發生,我還沒有創建一個actionSwitch方法。

是的,你的應用程序仍然會崩潰,因爲無論你作爲目標傳入什麼都必須實現作爲選擇器傳入的選擇器/方法。

視圖控制器是實現此方法的理想場所。這個事件目標的一個非常標準的實現將如下所示:

-(void)actionSwitch:(UISwitch *)theSwitch{ 
    if (theSwitch.isOn){ 
     // Switch was switched on respond accordingly 
    } 
    else { 
     // Switch was switched off respond accordingly 
    } 
} 
+0

我之所以沒有使用'self'是因爲我也有編程創建的文本框。 「自我」他們出現在UIScrollView背後的視圖中,用戶看不到它們。但我只是嘗試改變爲UISwitch的「自我」,並且錯誤仍然存​​在。我還沒有創建一個actionSwitch方法。如果我在UIScrollView所在的視圖控制器中執行此操作,是否可以解決問題?此外,關於如何創建所述動作切換方法的任何鏈接或信息也會很好。 – 2012-01-17 19:42:48

+0

好的,我添加了一個 - (IBAction)選擇器:(id)actionSwitch {}方法,但錯誤仍然發生。請記住,我必須動態創建這些內容,並有可能,根據用戶,我可能永遠不會創建交換機。所以我不能假設他們會一直在那裏的一堆變量和方法。 – 2012-01-17 19:52:41

+0

@JesseDurham,在迴應評論時附上答案。 – NJones 2012-01-17 20:02:58

相關問題