Я пишу приложение для калькулятора. У меня есть UIPickerView (1 столбец) загрузки данных из NSArray строк. Пользователь выберет один из них (он выбирает, какой тип калькулятора использовать - каждый использует свой метод расчета). Пользователь вводит некоторые вещи в некоторые поля UITextFields и затем нажимает кнопку UIB для выполнения вычислений.
Мой 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.
Теперь у меня есть метод doCalculations, когда кто-то нажимает кнопку UIB:
-(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, вопросы переполнения стека, игра с образцом кода и работа с моим собственным кодом.
Извините, если вопрос слишком длинный, я подумал, что другим, кто ищет помощь в будущем, было бы более полезно увидеть полную идею. (По крайней мере, я знаю, что иногда я теряюсь с этими страницами вопросов.)
Буду очень признателен за любую помощь,
Райан