【发布时间】:2011-10-17 08:19:47
【问题描述】:
我正在编写一种计算器应用程序。我有一个 UIPickerView(1 列)从字符串的 NSArray 加载数据。用户将选择其中之一(它选择使用哪种类型的计算器——每个都使用不同的计算方法)。用户在一些 UITextFields 中输入一些东西,然后按下 UIButton 进行计算。
我的 NSArray 是这样的:
calcNames = [NSArray alloc] initWithObjects:@"first", @"second", @"third", nil];
我的方法被称为 firstCalc(input1, input2, input3), secondCalc(input1, input2, input3) 等等。 (输入来自 UITextFields。)
当我按下按钮时,我想告诉它查看 UIPickerView 中的选择是什么并运行相应的方法,而无需为每个输入一个 if-then 语句(由于原因,这样做非常不方便特定于我的应用程序,超出了本次讨论的范围)。
所以我已经定义了一种方法来确定所选计算是什么:
selectedCalc = [[NSString alloc] initWithString:[calcNames objectAtIndex:row]]
其中 '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];
}
}
}
所以基本上,它会运行一个 for 循环,直到它找到从 UIPickerView 中选择的计算器,当它找到它时,运行计算并显示它们。
我一直在尝试了解函数指针或选择器(NSSelectorFromString?)是否适合在这里使用以及如何使用它们,但经过几天的阅读,我真的很难理解该去哪里Apple 的文档、Stack Overflow 问题、使用示例代码以及修改我自己的代码。
对不起,如果问题太长,我认为它可能对其他人在未来寻求帮助以查看完整的想法更有帮助。 (至少我知道有时我会迷失在这些问题页面上。)
如果有任何帮助,我将非常感谢,
瑞恩
【问题讨论】:
标签: objective-c ios methods nsstring nsarray