Ios 我正在尝试用Xcode制作一个转换计算器
我已经建立了基本的,它包括一个选择器。因此,无论用户从选择器中选择什么转换单位,标签都应该更新,以显示转换单位的名称,一旦用户在文本框中输入数字并点击按钮,答案应该显示在第二个文本框中。现在代码执行了,但问题是无论我在选择器中选择什么,它总是进行权重转换。我知道我需要一个switch语句,但我不确定如何或在哪里实现它 另一个问题是标签会更新,但只有在按下“转换”按钮时才会更新,所以请帮助我解决这个问题 这是我的ViewController.h文件Ios 我正在尝试用Xcode制作一个转换计算器,ios,objective-c,xcode,Ios,Objective C,Xcode,我已经建立了基本的,它包括一个选择器。因此,无论用户从选择器中选择什么转换单位,标签都应该更新,以显示转换单位的名称,一旦用户在文本框中输入数字并点击按钮,答案应该显示在第二个文本框中。现在代码执行了,但问题是无论我在选择器中选择什么,它总是进行权重转换。我知道我需要一个switch语句,但我不确定如何或在哪里实现它 另一个问题是标签会更新,但只有在按下“转换”按钮时才会更新,所以请帮助我解决这个问题 这是我的ViewController.h文件 #import <UIKit/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
这不是理想的用户界面,效率低下,但这是你的应用程序。我只是想指出,你可能想花时间在它的设计和结构上 至于你的问题的解决办法,我不能为你解决所有问题,但我会指出一些让你更容易解决的事情
标签不更新的原因是,在单击“转换”按钮之前,您不会更新任何内容。下面的函数用于获取选择器新行的事件
-(void)pickerView:(UIPickerView *)pickerView didSelectRow:
(NSInteger)row inComponent:(NSInteger)component
{
NSLog(@"didSelectRow %li, inComponent: %li", row, component);
}
请尝试以下方法:
-(void)pickerView:(UIPickerView *)pickerView didSelectRow:
(NSInteger)row inComponent:(NSInteger)component
{
NSLog(@"didSelectRow %li, inComponent: %li", row, component);
switch (row) {
case 0:
self.textLabelData1.text = @"Dollar";
self.textLabelData2.text = @"Rupees";
break;
case 1:
// and so on
}
}
您的下一个问题是,您没有告诉“转换”函数当前选择了哪一行,并且您的条件
if
什么也不做
在obj-c中,直接用于变量的条件语句基本上只是检查初始化if(x)
仅表示x已初始化为变量=true,if not=false。在这种情况下,这可能不是你想要的逻辑
下一步,似乎您正在尝试将3个不同的功能链接到同一个按钮?这就是您的上述问题所在,如果相关问题导致出现问题,则所有三个功能将同时启动。。。但只有一个人有最后的发言权。大概是你上次联系的那个,虽然我不能肯定。我建议使用一个单独的功能来处理按钮按下,然后将其传递到正确的方法
最后,您永远不会告诉函数关于选择器状态的任何信息。您需要将其设置为IBOutlet,以便您的变量可以访问它。然后,您可以使用选择器的selected row函数来确定要使用的转换
我强调的内容将解决您的问题,但我强烈建议您查看一些教程,以便您了解更多有关为什么事情会这样做的信息。我建议:
希望有帮助 所以,你的问题是“请为我调试我的小程序”?这里的具体问题是什么,您尝试了什么,非常感谢!我会试试看。我是Objective-C新手,所以遇到了一些语法问题。谢谢你的帮助!不用担心,我们都去过:)
-(void)pickerView:(UIPickerView *)pickerView didSelectRow:
(NSInteger)row inComponent:(NSInteger)component
{
NSLog(@"didSelectRow %li, inComponent: %li", row, component);
switch (row) {
case 0:
self.textLabelData1.text = @"Dollar";
self.textLabelData2.text = @"Rupees";
break;
case 1:
// and so on
}
}