如何使用 2 组件选择器和文本字段输入在 Xcode 中编写计算代码

2023-12-06

我正在尝试对 iPhone/iPad 屏幕进行编码,该屏幕根据文本字段中输入的内容以及 2 组件选择器中选择的内容输出值。我已经完成了基础知识,直到显示输入/选择的数据为止,但缺少执行计算。我搜索了我能找到的所有资源,并利用了我找到的所有相关代码,如下所示。

具体来说,我想允许用户在一个文本字段中输入美元金额,选择支付频率(每小时、每月等),选择他们想要将其转换为的支付频率,然后在当他们点击按钮时的其他文本字段。另一个按钮将清除字段,以便他们可以转换另一个金额。更具体地说,如果他们想查看半个月的周薪 310 美元,他们可以在第一个字段中输入“310”,在第一个选择器组件中选择“每周”,在另一个组件中选择“半月”,然后点击计算按钮。另一个字段将显示 $671.67 (310 * 52 / 24 = 671.67)。

为了以防万一,发生这种情况的视图控制器与导航控制器绑定在一起,作为连接到主视图控制器的 6 个屏幕之一的 5 个屏幕之一(需要点击几次才能到达此屏幕) 。

到目前为止,我可以在两个文本字段中输入数字,并且可以旋转 2 个选择器组件并使它们的选择显示在标签中,但这就是我陷入困境的地方。我找不到如何实现它的示例。

这是我的 ViewController.h 代码:

    @interface PayFrequencyViewController : UIViewController
<UIPickerViewDelegate, UIPickerViewDataSource>
{
    UIPickerView *payPicker;
    NSArray *fromArray;
    NSArray *toArray;
    NSArray *fromValues;
    NSArray *toValues;
    UILabel *resultText;
    UITextField *inputText;
}
@property (strong, nonatomic) IBOutlet UIPickerView *payPicker;
@property (strong, nonatomic) NSArray *fromArray;
@property (strong, nonatomic) NSArray *toArray;
@property (strong, nonatomic) NSArray *fromValues;
@property (strong, nonatomic) NSArray *toValues;
@property (strong, nonatomic) IBOutlet UILabel *resultText;
@property (strong, nonatomic) IBOutlet UITextField *inputText;
- (IBAction)Convert:(id)sender;
- (IBAction)Clear:(id)sender;
@end

这是我的 ViewController.m 代码:

    @interface PayFrequencyViewController ()

@end

@implementation PayFrequencyViewController
@synthesize payPicker;
@synthesize toArray;
@synthesize fromArray;
@synthesize toValues;
@synthesize fromValues;
@synthesize resultText;
@synthesize inputText;

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        // Custom initialization
    }
    return self;
}

- (void)viewDidLoad
{
    self.fromArray = [[NSArray alloc] initWithObjects:
                      @"Annual", @"Monthly", @"48/Year", @"SemiMonthly", @"BiWeekly", @"Weekly", @"Hourly", nil];

    self.fromValues = [[NSArray alloc] initWithObjects: 
                       [NSNumber numberWithFloat:1.0],
                       [NSNumber numberWithFloat:12.0], 
                       [NSNumber numberWithFloat:48.0],
                       [NSNumber numberWithFloat:24.0], 
                       [NSNumber numberWithFloat:26.0],
                       [NSNumber numberWithFloat:52.0], 
                       [NSNumber numberWithFloat:2080.0], nil];


    self.toArray = [[NSArray alloc] initWithObjects:
                      @"Annual", @"Monthly", @"48/Year", @"SemiMonthly", @"BiWeekly", @"Weekly", @"Hourly", nil];

    self.toValues = [[NSArray alloc] initWithObjects: 
                     [NSNumber numberWithFloat:1.0],
                     [NSNumber numberWithFloat:12.0], 
                     [NSNumber numberWithFloat:48.0],
                     [NSNumber numberWithFloat:24.0], 
                     [NSNumber numberWithFloat:26.0],
                     [NSNumber numberWithFloat:52.0], 
                     [NSNumber numberWithFloat:2080.0], nil];


    [super viewDidLoad];
    inputText.keyboardType = UIKeyboardTypeDecimalPad;
    // Do any additional setup after loading the view.
}

- (void)viewDidUnload
{
    [super viewDidUnload];
    // Release any retained subviews of the main view.
    // e.g. self.myOutlet = nil;
    self.toArray = nil;
    self.fromArray = nil;
    self.resultText = nil;
    self.inputText = nil;
}

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    return YES;
}

- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView {

    return 2;
}

- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component {

    if (component == 0) {
        return [fromArray count];
    }
    return [toArray count];
}

- (NSString *)pickerView:(UIPickerView *)pickerView
             titleForRow:(NSInteger)row
            forComponent:(NSInteger)component
{
    if (component == 0) {
        return [fromArray objectAtIndex:row];
    }
    return [toArray objectAtIndex:row];
} 

-(void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row
      inComponent:(NSInteger)component {

//- (IBAction)Convert:(id)sender {

//    float valuein = [[fromValues text] floatValue];
//    float valueout = [[toValues text] floatValue];
//    [resultText setText:[NSString stringWithFormat:@"%6.2f", result]];
//    [inputText resignFirstResponder];

    float valuein = [[fromValues objectAtIndex:row] floatValue];
    float valueout = [[toValues objectAtIndex:row] floatValue];
    float input = [inputText.text floatValue];
    float result = input * valuein / valueout;
    NSString *resultString = [[NSString alloc] initWithFormat: @"$ %@", [toArray objectAtIndex:row]];
}

- (IBAction)Clear:(id)sender {
    inputText.text = @"";
    resultText.text = @"";
}

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event 
{
    [inputText resignFirstResponder];
}

@end

对于冗长的帖子和格式不正确的代码,我深表歉意。我希望有人能告诉我哪些代码是不必要的以及完成此任务需要哪些代码。


None

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 2 组件选择器和文本字段输入在 Xcode 中编写计算代码 的相关文章

随机推荐

  • Selenium 与 Python-unittest - 测试返回进程已完成,退出代码为 0,并且不执行任何操作

    有人可以帮助我理解为什么执行以下代码 但没有执行任何操作吗 返回代码为 0 但浏览器未打开或未执行任何操作 值得一提的是 setUp 方法已在其他模块中以相同的方式配置 并且工作正常 请查看最后的回复 import unittest fro
  • 如何翻译 Blazor 组件和 App.razor 中的字符串?

    我想本地化共享组件的字符串 例如 NavMenu razor 或 App razor 页面 我成功地按照中所述翻译了我的页面中的内容 NET Core 通用指令还有更多特定 Blazor 文档 创建具有正确名称的资源文件 例如 PageNa
  • 如何在 thymeleaf 中包含 message.properties

    I am using spring boot with thymeleaf This is my project structure 这是我的应用程序开始课程 EnableAutoConfiguration Configuration Co
  • 查询 documentdb 中的子字段

    例如 我有以下用于收集 交付的文档 doc docid 15 deliverynum 123 text txxxxxx date 2019 07 18T12 37 58Z docid 16 deliverynum 456 text txxx
  • 如何在sqlite中使用填充连接字符串

    我的 sqlite 表中有三列 Column1 Column2 Column3 A 1 1 A 1 2 A 12 2 C 13 2 B 11 2 我需要选择Column1 Column2 Column3 e g A 01 0001 我想用一
  • 在 C 中按值传递结构而不是传递指针有什么缺点吗?

    在 C 中按值传递结构而不是传递指针有什么缺点吗 如果结构体很大 显然会存在复制大量数据的性能问题 但对于较小的结构体 它基本上应该与将多个值传递给函数相同 当用作返回值时 它可能会更有趣 C 函数只有单个返回值 但您通常需要多个返回值 因
  • 如何在不重新加载页面的情况下从数据库获取数据?

    当用户提出任何显示在分区顶部的问题时 我想制作一个常见问题解答面板 而无需重新加载页面 因为我认为我必须每隔几秒就与数据库建立连接 现在的问题是如何在不重新加载页面的情况下建立连接以及如何显示新问题 您有两个选择 Ajax 它允许您使用 J
  • 如何应用 CSS 进行打印?

    我正在尝试在我的页面之一中打印 div 但打印时无法应用 css 在样式标签内写入 media print 不起作用 我应该怎么办 使用以下
  • Java 泛型和 Groovy 重载

    我使用 Groovy JUnit 和 EasyMock 为 Java 应用程序编写单元测试 EasyMock中有几个重载方法capture 已弃用 并附有注释 由于强制擦除更困难 无法在 Java 7 中编译 这些方法将类型的对象作为参数C
  • data.table 聚合操作中的进度条

    ddply has a progress要在运行时获得进度条 是否有等效的data table in R 是的 您可以使用任何您想要的进度状态 library data table dt data table a 1 4 b c a b d
  • 一页上有两个分析

    如何在一个网站上放置两个 GA 代码 我有这个代码 function i s o g r a m i GoogleAnalyticsObject r i r i r function i r q i r q push arguments i
  • 将 NSDictionary 键排序为 NSDate

    我正在使用最新的 SDK 和 XCode 4 2 开发 iOS 4 应用程序 我有一个NSMutableDictionary where keys are NSDate and values are NSMutableString 当我填满
  • 如何在Android上设置语音识别的语言?

    我一直在android中研究语音识别API 发现当语言设置更改时 语音结果会发生变化 有没有办法以编程方式设置它 或者是否打算在语音语言设置屏幕上午餐 或者还有什么 笔记 我尝试额外使用这个意图 intent putExtra Recogn
  • c++ 如何转发声明一个继承自另一个类的类?

    我创建了一个具有一堆继承类 父类 的类 以便我可以使用多态性 但问题是有两个类相互调用 因此 我需要转发声明它们 并且我可以转发声明一个类 但是当我转发声明继承的类时 编译器表示它无法将指针从一个类更改为另一个类 有没有办法对继承的类进行前
  • 根据表单中的多个列表框过滤查询

    我有一个包含两个表的 Access 数据库 联系人 和 国家 地区 其中每个都包含多个字段 我有一个查询 Filter 它将这两个表组合在一起 我想创建一个表单 其中的列表框数量与查询中的字段数量一样多 用户可以打开表单并从每个列表框中选择
  • 我可以创建一个 XSD 架构来为所有复杂类型放置一个属性吗?

    我想创建一个 XSD 来定义一个属性 该属性可以放置在其他架构中的元素或不属于任何架构中的元素上 例如 架构看起来像这样
  • java流中遇到顺序保存

    我已经经历过相关问题 例如如何确保java8流中的处理顺序 我仍然不完全清楚输出元素的顺序 因此请澄清我以下的疑问 Integer intArray 1 2 3 4 5 6 7 8 List
  • 您是否需要两个表单字段来与 HTML 匹配?

    有没有办法要求两个表单字段中的条目使用 HTML 进行匹配 或者这仍然需要用 JavaScript 来完成 例如 如果您有两个密码字段 并且想要确保用户在每个字段中输入了相同的数据 是否可以使用一些属性或其他编码来实现此目的 不完全是 HT
  • 强制在 Android 上的 Soundcloud 应用程序中打开 Soundcloud 曲目

    我有一个链接到 Soundcloud 曲目的移动应用程序 在 Android 上 单击这些链接会弹出一个对话框 要求用户 使用浏览器或 Soundcloud 应用程序完成操作 有没有办法绕过这个屏幕 只在 Soundcloud 播放器中播放
  • 如何使用 2 组件选择器和文本字段输入在 Xcode 中编写计算代码

    我正在尝试对 iPhone iPad 屏幕进行编码 该屏幕根据文本字段中输入的内容以及 2 组件选择器中选择的内容输出值 我已经完成了基础知识 直到显示输入 选择的数据为止 但缺少执行计算 我搜索了我能找到的所有资源 并利用了我找到的所有相