2013-04-22 53 views
0

我是Objective-c和Xcode中的新成員。我試圖從某些按鈕中獲取大量數據,但我得到的只有一個數字。我正在使用按鈕標籤。例如:如果我想添加兩個數字2 + 3,它運作良好。但是當我想添加230 + 32時,它不會。從UIbutton讀取數字

接口:

- (IBAction)getnumber:(id)sender; 
@property (strong, nonatomic) IBOutlet UILabel *Result; 
int number; 

實現部分:

-(IBAction)getnumber:(id)sender { 
    number = [sender tag]; 
    Result.text = [NSString stringWithFormat:@"%i", number]; 
} 

有沒有什麼辦法讓從按鈕的標籤數量衆多,如果我拍了拍多個按鈕?

預先感謝您。

回答

1

你的問題來自於你如何定義你的變量。如果我理解你的設置是正確的,你有類似計算器界面的東西,你只是將按鈕的標籤設置爲單個數字的數字,如1,2,3,......以指示要顯示的下一個數字?

在這種情況下,你的行number = [sender tag]將設置到該按鈕的號碼一個全局變量(記住,當你的CS教授告訴你,從來沒有使用全局變量?這裏有一個理由!)因爲你只是改寫number這個按鈕的標籤,當你去要在下一行設置結果字符串,number只保存按下的最後一個按鈕的值。相反,你應該做這樣的事情。

@interface MyClass : UIViewController 
@property (nonatomic, strong) IBOutlet UITextView * resultLabel; 
- (IBAction)getNumber:(id)sender; 
@end 

- (IBAction)getNumber:(id)sender; 
{ 
    self.resultLabel.text = [NSString stringWithFormat:@"%@%d", self.resultLabel.text, [sender tag]]; 
} 

這樣,每次getNumber:被調用時,它需要的任何文本標籤目前顯示和追加的這個按鈕的值。作爲一個方面說明,它通常用小寫字母來啓動Objective-C屬性名稱。

+0

經過以上步驟,要在操作中使用它,您需要使用[resultLabel。文本intvalue]或如果小數點也被按下,[resultLabel.text floatvalue]在數學運算中使用它... – utsabiem 2013-04-22 07:42:44

+0

是的,它是一個計算器應用程序。我試圖按照你所說的做,但它運作良好,但是當我試圖添加兩個數字時,比如11 + 22 =我總是在結果1133之前得到第一個數字。非常感謝這幫了我很多。 – Michelle 2013-04-23 04:31:25

+0

是的,你會想做一些類似於utsabiem的實際計算,比如用'self.accumulator = [resultLabel.text integerValue]'存儲當前值'當一個操作符被按下時清除結果' resultLabel.text = @「」'最後執行你的數學例如'self.accumulator + = [resultLabel.text integerValue]; resultLabel.text = [NSString stringWithFormat:@「%d」,self.accumulator];' – axiixc 2013-04-23 04:52:09

0

我認爲你必須附加一個變量類型number。它應該是 -

- (IBAction)getnumber:(id)sender 
{ 
    NSInteger number = [sender tag]; 
    Result.text  = [NSString stringWithFormat:@"%i", number]; 
} 

+0

它沒有工作,但謝謝你回答我。 – Michelle 2013-04-23 04:33:49

0

你需要改變你的邏輯。

number = 0;

如果與數字按鈕被點擊

數=數* 10 + button.tag;

其他

如果操作(不等於)時

店的數量和運營商

如果=算子被點擊

執行存儲數量的操作和最近輸入的號碼。

+0

數乘以10的目的是什麼?感謝您的回答 – Michelle 2013-04-23 04:39:15

+0

@Michelle 520意味着5 * 100 + 2 * 10 + 0,所以當您輸入一個具有這種邏輯的數字時,您可以得到確切的數字。 – AMohan 2013-04-23 04:41:53

+0

@Michelle:你可以得到一個字符串並將其轉換爲數字,但我認爲如果我們以數字而不是字符串的方式進行處理,那就好了。 – AMohan 2013-04-23 04:44:00