2011-09-30 36 views
1

我正在編碼一個簡單的計算器,我想爲所有4個算術按鈕做一個獨特的功能。我到了這裏:簡單的函數給我一個崩潰Objective-C

-(IBAction)simbolo1:(UIButton*)sender{ 

    if (isNumeric(campo1.text)) { 

     NSString *str=campo1.text; 
     campo2.text=str; 
     int S=1; 
     NSString *cmp1 = [NSString stringWithFormat:@"%d", S]; 
     sinal.text=cmp1; 
     [email protected]""; 

    } else { 

     [email protected]"Only numeric values"; 
    } 
} 

但是,由於某種原因,我不能得到這個工作。每次點擊按鈕,我都會崩潰。 所以,我檢查那裏真的是錯誤,我刪除整個代碼:

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

    [email protected]"Only numeric values"; 
} 

這些代碼行似乎給了我同樣的錯誤之前

我得到一個「綠色:標記「此文件:

#import <UIKit/UIKit.h> 

int main(int argc, char *argv[]){ 
    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; 
    int retVal = UIApplicationMain(argc, argv, nil, nil); <--------- This line right here 
    [pool release]; 
    return retVal; 
} 

編輯--------------- 在debud控制檯即時得到這樣的:

2011-09-30 09:17:14.319 Teste iPhone[28432:fb03] Applications are expected to have a root view controller at the end of application launch 
2011-09-30 09:17:21.714 Teste iPhone[28432:fb03] -[Teste_iPhoneAppDelegate simbolo1]: unrecognized selector sent to instance 0x6b7c2d0 
2011-09-30 09:17:21.715 Teste iPhone[28432:fb03] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[Teste_iPhoneAppDelegate simbolo1]: unrecognized selector sent to instance 0x6b7c2d0' 
*** First throw call stack: 
(0x166d062 0x17fed0a 0x166ecfd 0x15d3f10 0x15d3cf2 0x166eed9 0x16eb2 0x16e4a 0xbc3e6 0xbc8af 0xbbb6e 0x3c2a0 0x3c4c6 0x22c74 0x16399 0x1557fa9 0x16411d5 0x15a6042 0x15a492a 0x15a3dd4 0x15a3ceb 0x1556879 0x155693e 0x1438b 0x272d 0x26a5) 
terminate called throwing an exception(gdb) 
+0

究竟是什麼類型'campo1'鏈接IBOutlet UITextField* campo1;到適當的UITextField?請向我們顯示適當的頭文件 –

+0

查看調試器控制檯。 (1)那裏打印的錯誤是什麼(2)什麼是堆棧? –

+0

哦,對不起。 'campo1'是一個UITextField。 isNumeric是一個函數來檢查一個字符串是否只是數字。 – markus

回答

2

沒有足夠的信息來幫助你。您需要查看調試器控制檯並向我們顯示錯誤和堆棧。

但是,我要大膽猜測,並且說你沒有在界面生成器中將campo1 IBOutlet連接到它的UIView,並且它是零。要修復這個問題,在界面生成器(或者Xcode 4中,只需點擊它)中編輯視圖,然後將campo1出口旁邊的小圓圈(在連接選項卡中)拖到您希望它對應的UIView組件上。

如果不是這樣,錯誤不在這裏,但可能是由程序中的其他內容引起的。

[在看到控制檯後編輯]:您的連接看起來配置錯誤。爲什麼它會嘗試將simbolo1選擇器發送到Teste_iPhoneAppDelegate?它應該將它發送給你的ViewController。你是否在Interface Builder或類中使用連接(特別是代理)?

+0

如果你在應用程序中沒有太多,我會從頭開始並仔細添加每段代碼。有些連接感覺不對 - 可能在AppDelegate中,也許在ViewController中 - 很難說。 –

+0

同意,更好地重新編碼一切再謹慎。無論如何,感謝大家:D – markus

0

來設置的UITextField文本中使用

[campo1 setText:@"Only numeric values"]; 

,也不要忘了XCode的IB

+0

改變這條線後,即時運行後立即得到相同的崩潰。是的,這是正確的鏈接在IB – markus

+0

我不這麼認爲,如果它將正確連接,錯誤控制檯將有另一個內容 –