私は基本ビルドを作ってあり、それにはピッカーが含まれています。したがって、ユーザーがピッカーから選択した変換の単位が何であれ、その変換の単位の名前を表示するようにラベルを更新し、ユーザーがテキストボックスに数字を入力してボタンを押すと、その答えが2番目のテキストボックス。今度はコードが実行されますが、ピッカーで何を選んでも、問題は常にウェイト変換を行います。私はそこにswitch文が必要だと知っていますが、私はそれを実装する必要がどのように、どこにあるのかよくわかりません。私はXcodeを使って変換電卓を作ろうとしています
もう1つの問題はラベルが更新されていることですが、「変換」ボタンが押された場合にのみ問題になりますので、これを解決してください。
これは、これは理想的なUIではないと非効率を作成しますが、その
#import <UIKit/UIKit.h>
@interface ViewController : UIViewController
<UIPickerViewDelegate, UIPickerViewDataSource> {
IBOutlet UITextField *field1;
IBOutlet UITextField *field2;
IBOutlet UIPickerView *picker;
IBOutlet UILabel *label1;
IBOutlet UILabel *label2;
}
@property (weak, nonatomic) IBOutlet UILabel *textLabelData1;
@property (weak, nonatomic) IBOutlet UILabel *textLabelData2;
@property (nonatomic, retain) UIPickerView *picker;
-(IBAction) currencyConvert:(id)sender;
-(IBAction) weightConvert:(id)sender;
-(IBAction) distanceConvert:(id)sender;
@end
これは私のViewController.mファイルです
#import "ViewController.h"
@interface ViewController()
@end
@implementation ViewController
@synthesize picker;
static NSString *pd[3] = {@"Currency", @"Weight", @"Speed"};
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
#pragma mark UIPickerViewDelegate & UIPickerViewDataSource methods
-(NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView
{
return 1;
}
-(NSInteger)pickerView:(UIPickerView *)pickerView
numberOfRowsInComponent:(NSInteger)component
{
return 3;
}
-(NSString *)pickerView:(UIPickerView *)pickerView titleForRow:
(NSInteger)row forComponent:(NSInteger)component;
{
return pd[row];
}
-(void)pickerView:(UIPickerView *)pickerView didSelectRow:
(NSInteger)row inComponent:(NSInteger)component
{
NSLog(@"didSelectRow %li, inComponent: %li", row, component);
}
-(IBAction)currencyConvert:(id)sender
{
if (pd[0])
{
self.textLabelData1.text = @"Dollar";
self.textLabelData2.text = @"Rupees";
float dollar = [[field1 text] floatValue];
float rupees = dollar * 64.15;
[field2 setText: [NSString stringWithFormat: @"%3.3f", rupees]];
}
/* self.textLabelData1.text = @"Dollar";
self.textLabelData2.text = @"Rupees";
float dollar = [[field1 text] floatValue];
float rupees = dollar * 64.15;
[field2 setText: [NSString stringWithFormat: @"%3.3f", rupees]]; */
}
-(IBAction)weightConvert:(id)sender
{
if (pd[1])
{
self.textLabelData1.text = @"Kilogram";
self.textLabelData2.text = @"Lbs";
float kilogram = [[field1 text] floatValue];
float pounds = kilogram * 2.20462;
[field2 setText: [NSString stringWithFormat: @"%3.3f", pounds]];
}
}
-(IBAction)distanceConvert:(id)sender
{
if (pd[2])
{
self.textLabelData1.text = @"Mile";
self.textLabelData2.text = @"Kilometer";
float miles = [[field1 text] floatValue];
float kilometers = miles * 1.60934;
[field2 setText: [NSString stringWithFormat: @"%3.3f", kilometers]];
}
}
/* Pseudocode for switch statement
-- I tried doing this here, but it gives me an
error saying that "row" is undefined. I understand that
it is a local variable, but how else would I write the
switch statement?
Also, is the placement of the switch statement appropriate here
or will I need to implement it in a function?
switch (row)
{
case 1:
call currencyConvert
case2:
call weightConvert
case3:
call distanceConvert
}
*/
The link to the picture of my Main.storyboard
あなたの質問は「私の小さなプログラムをデバッグしてください」です。ここでの具体的な質問は何ですか、何を試しましたか – jdv