我正在寫一種計算器應用程序。我有一個UIPickerView(1列)從NSArray的字符串中加載數據。用戶將選擇其中的一個(它選擇使用哪種類型的計算器 - 每個都使用不同的方法來計算)。用戶在某些UITextFields中輸入一些內容,然後按UIButton進行計算。如何選擇基於NSArray元素的方法(Objective-C)
我的NSArray是這樣的:
calcNames = [NSArray alloc] initWithObjects:@"first", @"second", @"third", nil];
而我的方法被稱爲firstCalc(輸入1,輸入2,輸入3),secondCalc(輸入1,輸入2,輸入3),等等。 (輸入來自UITextFields。)
當我按下按鈕時,我想告訴它看看UIPickerView中的選擇是什麼,並且在不輸入if-then語句的情況下運行相應的方法每一個(由於特定於我的應用程序的原因,這很不方便,這超出了本討論的範圍)。
所以我已經定義了一個方法來確定所選擇的計算是什麼:
selectedCalc = [[NSString alloc] initWithString:[calcNames objectAtIndex:row]]
其中「行」是UIPickerView當前選擇。
現在我有一個當有人按下了UIButton的一個doCalculations方法:
-(IBAction)doCalculations:(id)sender {
// save the data input
double input1 = [input1Field.text doubleValue];
double input2 = [input2Field.text doubleValue];
double input3 = [input3Field.text doubleValue];
// do the calculations
int i;
for (i = 0; i < [calcNames count]; i++) {
if (selectedCalc == [calcNames objectAtIndex:i]) {
// do calculations here
double numResult = ??????
// if selectedCalc is "first", I want it to do firstCalc(input 1, input 2, input 3)
// if selectedCalc is "second", I want it to do secondCalc(input 1, input 2, input 3), and so on
// the rest is just for displaying the result
NSString* result = [NSString stringWithFormat:@"The answer is %f", numResult];
[resultLabel setText:result];
}
}
}
因此,基本上,它運行一個循環,直到找到計算器從UIPickerView選擇當它發現它,運行計算並顯示它們。
我一直在試圖理解,如果可能函數指針或選擇器(NSSelectorFromString?)是正確的事情在這裏使用,以及如何使用它們,但我真的很努力去了解幾天後的去向閱讀Apple的文檔,堆棧溢出問題,玩示例代碼,並修改我自己的代碼。
對不起,如果問題太長,我認爲這可能會對其他人在未來尋求幫助以查看完整想法更有幫助。 (至少我知道有時我失去了這些問題頁。)
我將是任何幫助非常感謝,
瑞安