使用 uipickerview 更改变量
Posted
技术标签:
【中文标题】使用 uipickerview 更改变量【英文标题】:Using uipickerview to change variable 【发布时间】:2014-04-16 12:54:21 【问题描述】:我是 Xcode 的新手,我一直在尝试将数字值分配给我的 UIPickerView 行。 我想实现的是一个简单的任务,但我做不到。 我有一个带有“每周”、“每两周”、“每月”、“每年”的选择器。 我希望每个选择的单词都由隐藏在我的代码中的数字表示。 我的第一个想法是根据我的选择器更改的标签中的 .text 更改整数的值。例如
/* double z = (if payCycleLbl.text isEqual: @"Weekly")
double z = [[NSString alloc] initWithFormat:@"%f", 52];
(else if payCycleLbl.text isEqual: @"Fortnightly")
double z = [[NSString alloc] initWithFormat:@"%f", 26];
(else if payCycleLbl.text isEqual: @"Monthly")
double z = [[NSString alloc] initWithFormat:@"%f", 12];
(else if payCycleLbl.text isEqual: @"Annually")
double z = [[NSString alloc] initWithFormat:@"%f",1;
*/
我对任何方法持开放态度,只要牢记这里的目标是分配一个根据用户选择而变化的数字,并且可以在我的脚本中由单个“双 z”值表示的其他计算中使用.
感谢您的建议。
【问题讨论】:
【参考方案1】:将d
声明为全局变量意味着在.h 文件中将d
声明为double
并添加选择器视图委托
- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component
d=(double)row+1;
每当您选择行时,它都会分配d
,例如您在选择器视图中有“每周”、“每两周”、“每月”、“每年”,因此row
变量为 0 表示每周,1 表示每两周等等....
并通过在您选择任何行时添加此委托,然后将 d
分配给特定的行索引,例如,如果您选择“每月”,则 d
包含 (2+1) row+1
【讨论】:
谢谢。仅此信息不是解决方案,但它为我的选择器行提供了一个数字值,我能够想出其余的。所以谢谢你。 现在我遇到了一个新问题,一切正常并按照我的意愿进行计算,但由于未知原因,如果这是第一次计算,我需要按两次计算按钮。如果我使用清除按钮并再次填充我的计算器,我只需要按一下计算按钮。有什么想法吗? 您可以全局获取布尔变量,然后将其设置为您的要求,例如“checkFlag”是我的布尔变量及其全局变量,我想在按下按钮两次时执行一些任务 -(void)ViewDidLoad chekcFlag=true; '-(IBAction)btnClicked:(id)sender if(checkFlag==True) checkFlag=False; //第一次点击的代码 else checkFlag=True; //代码第二次点击 ' 谢谢。我可以试试。我掩盖了这个问题,所以用户通过将我的计算操作添加到所有文本字段作为“编辑完成”来不知道它的发生(抱歉,如果这不是它的实际名称,我不记得确切的措辞)。这使得计算操作发生了很多,因此没有人注意到您需要执行两次。 所以现在我有一个选择器,其中的行代表我可以在我的代码中使用的变量,一切都很好。我只是注意到如果该行在用户想要的选择上,例如每周是默认的,每周是用户想要的。数值和 .text 不填充。有没有办法在视图中声明一行确实加载了。我试过这个 [picker reloadAllComponents]; [picker selectRow:0 inComponent:0 动画:YES];它会更改选择器加载的行,但不会像这样选择行。只是查看它而不更改它影响下游的任何内容。有什么想法吗?以上是关于使用 uipickerview 更改变量的主要内容,如果未能解决你的问题,请参考以下文章
当 UIPickerView 值更改时,表行在 ios 中更改
使用 Swift 更改 UIPickerView 中线条的颜色