私はある種の電卓アプリを書いています。私は文字列のNSArrayからデータをロードするUIPickerView(1列)を持っています。ユーザーは、これらのいずれかを選択します(使用する計算機のタイプを選択しています - それぞれ異なる方法を使用して計算します)。ユーザはいくつかのUITextFieldに何かを入力し、次にUIButtonを押して計算を行います。NSArrayの要素に基づいてメソッドを選択する方法(Objective-C)
マイNSArrayのがこれです:
calcNames = [NSArray alloc] initWithObjects:@"first", @"second", @"third", nil];
そして、私の方法がそのようにfirstCalc(INPUT1、INPUT2、INPUT3)、secondCalc(INPUT1、INPUT2、INPUT3)と呼ばれる、とされています。 (入力はUITextFieldsから来ています)
私はボタンを押すと、UIPickerViewの選択内容を見て、対応するメソッドを実行するためにif-then文を入力するだけでそれぞれ(私のアプリに固有の理由でこれを行うのは非常に不便ですが、これはこの議論の範囲を超えています)。
は、だから私はすでに選択CALCが何であるかを決定するための方法を定義している:
「行」はUIPickerViewの現在の選択であるselectedCalc = [[NSString alloc] initWithString:[calcNames objectAtIndex:row]]
。
今、私は誰かが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のドキュメントを読んで、Stack Overflowの質問をしたり、サンプルコードで遊んだり、自分のコードを試したりしていました。
申し訳ありません申し訳ありません申し訳ありませんが長すぎる場合、私はそれが将来的に完全なアイデアを見るために援助を探している他の人に役立つかもしれないと思った。 (少なくとも私は時々私はこれらの質問のページで失われています知っている。)
私はどのような援助のために非常に感謝される、
ライアン
は