2010-01-07 45 views
2

按下按鈕時,我收到顯示在下面的錯誤消息。我的「buttonPressed」方法中還沒有任何代碼,儘管我認爲它沒有任何關係。按下myButton時發生iPhone錯誤

錯誤消息:「投擲 'NSException' 方案接收信號的一個實例後終止稱爲: 「SIGABRT」

的UIButton * myButton的= [UIButton的buttonWithType:UIButtonTypeCustom];

[myButton的setImage: [UIImage的imageNamed:@ 「ButtonStandard.png」] forState:UIControlStateNormal]; [myButton的setImage:[UIImage的imageNamed:@ 「ButtonSelected.png」] forState:UIControlStateSelected]; [myButton的setShowsTouchWhenHighlighted:YES];

myButton.frame = CGRectMake(0.0, 380.0, 320.0, 100.0); 
[myButton addTarget:self action:@selector(buttonPressed) forControlEvents:UIControlEventTouchUpInside]; 
[contentView addSubview:myButton]; 

任何幫助將是偉大的。

+0

空難後,打開控制檯(的運行菜單上的一個選項)。它應該告訴你什麼是例外。 – 2010-01-07 01:18:16

回答

2

更改@selector(buttonPressed)@selector(buttonPressed:)(注意最後的冒號),改變方法本身:

-(void)buttonPressed:(id)sender { 
    /* sender will be the UIButton. */ 
} 
+0

可以使用和不使用參數來聲明操作。 59: – 2010-01-07 01:17:42

+0

我以後再尋找 2010-01-06 20收到此錯誤47.704 SHS [3844:207] *** - [SHSViewController buttonPressed:]:無法識別的選擇發送到實例0x11aa30 讓我感動我的方法SHSViewController和@selector(buttonPressed :)現在工作正常。我不知道爲什麼期望該方法來自SHSViewController而不是它所在的導入類?有人知道嗎? 感謝你們兩位,你們每個人都以不同的方式提供幫助! – I00I 2010-01-07 02:04:45

+0

如果上面的代碼片段是SHSViewController的一部分,那麼在addTarget:action:forControlEvents:方法調用中對self的引用引用SHSViewController對象,而不是按鈕對象。如果上面的代碼在SHSViewController中是* not *,那麼您的內存泄漏。 在Objective-C的說法中,addTarget:action:forControlEvents:消息要求對象myButton在觸發指定控件事件時將buttonPressed:消息發送給對象self。因此,我必須接受buttonPressed:消息。這裏,self是創建按鈕SHSViewController的對象。 – 2010-01-07 06:41:51