从pickerview中的另一列确定一列值

Posted

技术标签:

【中文标题】从pickerview中的另一列确定一列值【英文标题】:Determine one column value from another column in pickerview 【发布时间】:2015-03-29 01:54:07 【问题描述】:

我正在处理一个包含 3 列的选择器视图。我想从第二列中确定第三列的值。这是我的部分代码

- (void)viewDidLoad 
    [super viewDidLoad];

    Number=@[@"Trans",@"1st",@"2nd",@"3rd",@"4th",@"5th",@"6th",@"7th",@"8th",@"9th",@"10th",@"11th",@"12th"];
    Season=@[@"Spring",@"Summer",@"Fall"];
    Course=@[@"CHEM1100 General Chem I",@"CHEM2100 General Chem II",@"CHEM3511 Org Chem",@"CHEM3521 Org Chem II"];

   // Course=@[@"Summer1",@"Summer2",@"Summer3"];

    Course = [Course sortedArrayUsingSelector:@selector(compare:)];
    Number =[Number sortedArrayUsingSelector:@selector(compare:)];
    Season =[Season sortedArrayUsingSelector:@selector(compare:)];



这是我的问题,我怎样才能实现这样的目标

if (Season==@"Spring")
Course= @[@"CHEM1100 General Chem I",@"CHEM2100 General Chem II",@"CHEM3511 Org Chem",@"CHEM3521 Org Chem II"];
else if (Season==@"Summer")
Course=@[@"Summer1",@"Summer2",@"Summer3"];

对不起,我不知道用什么方法来完成代码。请问有什么办法吗?

为了显示列值,我使用以下代码:

- (IBAction)addCourse:(UIButton *)sender 

    NSInteger numRow=[picker selectedRowInComponent:kNumComponent];//0=1st,1=2nd,etc
    NSInteger SeaRow=[picker selectedRowInComponent:kSeaComponent];//0=fall,1=spring,2=summer
    NSInteger CourseRow=[picker selectedRowInComponent:kCourseComponent];

   NSString *num=Number[numRow];
   NSString *season=Season[SeaRow];
    NSString *course=Course[CourseRow];

    NSString *msg=[[NSString alloc ]initWithFormat:@"%@ ",course];
    _courseLabel.text=[msg substringToIndex:8]; 



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

    if (component==kNumComponent)
        return [Number count];
        else if(component==kSeaComponent)
            return [Season count];
        else return [Course count];


【问题讨论】:

您当前的titleForRow:/viewForRow: 方法是什么样的? 感谢林赛的回复。请检查我的更新 【参考方案1】:

根据文档,您必须为 UIPickerView 提供数据源和委托。数据源告诉视图有多少组件和行,而委托告诉它组件行的内容。让我们假设您在委托中实现了 titleForRow:。由于这将根据选择而改变,您需要做两件事:(i)确保您的委托对象知道进行了哪个选择(例如@“Spring”)和(ii)然后您需要调用UIPickerView reloadComponent: 方法,以便您的委托的 titleForRow: 方法将被调用。

例子:假设你的action方法是componentSelected:

-(void)componentSelected:(id)sender

    NSInteger row = [myPicker selectedRowInComponent:seasonComponent];
    myDelegate.season = row;
    [myPicker reloadComponent:courseComponent];

顺便说一句,值得养成非常小心使用“=”、“==”、isEqualToString: 等的习惯以避免错误。您的问题有几个基本的语法错误。线

if(season = @"spring")

应该是

if([season isEqualToString:@"spring"]);

不仅因为“=”是赋值,还因为如果参数之一是文字(本质上是指针比较),“==”就没有意义。 isEqualToString 会将目标字符串与参数字符串进行比较。

【讨论】:

哇,非常感谢。很有帮助。

以上是关于从pickerview中的另一列确定一列值的主要内容,如果未能解决你的问题,请参考以下文章

是否可以将 SELECT 语句中具有重复列值的记录与 SQL 中的另一条记录合并?

CodeIgniter 查询:如何将列值移动到同一行中的另一列并将当前时间保存在原始列中?

根据熊猫中的另一个列值有条件地填充列值

检查每组的另一列中是不是存在列值

如果同一表的另一列中存在值,如何找到对应的列值

如何将列值从存储过程中的另一个表更新到表中?