두 개의 UIPickerView에 문제가 있습니다.동적 UIPickerView 업데이트
pickerParent라는 첫 번째 피커는 음식의 유형을 선택합니다. 두 번째 피커 pickerChild는 이러한 유형의 음식 목록을 표시합니다.
문제는 pickerChild가 해당 항목 중 하나를 선택하려고하면 pickerChild가 pickerParent의 해당 항목과 일치하도록 업데이트된다는 것입니다. 예 : pickerParent에서 고기를 선택하면 pickerChild에 "생강 쇠고기, 레몬 닭고기, 소금 & 후추 갈비 및 달콤한 & 신 돼지 고기"가 표시됩니다. 그런 다음 Sweet & 신 돼지 고기를 선택하면 선택 항목의 네 번째 항목이됩니다. 목록에서 야채의 속성을 얻고 "모듬 된 야채"만 표시)
누군가 나를 도와 줄 수 있습니까? 자식 자체를 업데이트하지 않습니까?
내 코드는 다음과 같습니다. 아이 피커 변경 한 중 피커 다시로드됩니다 있도록
#import "MasterViewController.h"
#import "DetailViewController.h"
@interface MainPage() {
NSMutableArray *_objects;
}
@end
@implementation MainPage
@synthesize pickerChild;
@synthesize pickerParent;
@synthesize image_view;
- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView
{
return (pickerView == pickerParent ? 1 : 1);
}
-(NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component{
NSArray *values = (pickerView == pickerParent ? topics : items);
return [values count];
}
-(NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component{
NSArray *values = (pickerView == pickerParent ? topics : items);
return [values objectAtIndex: row];
}
- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component{
if ([[topics objectAtIndex:row] isEqual:@"Noodles"]) {
items = noodle;
} else if ([[topics objectAtIndex:row] isEqual:@"Rice"])
{
items = rice;
} else if ([[topics objectAtIndex:row] isEqual:@"Meat"])
{
items = meat;
} else if ([[topics objectAtIndex:row] isEqual:@"Vegetables"])
{
items = vegatable;
} else if ([[topics objectAtIndex:row] isEqual:@"Favorites"])
{
items = favorite;
}
[pickerChild reloadAllComponents];
}
- (void)awakeFromNib
{
[super awakeFromNib];
}
- (void)viewDidLoad
{
topics = [[NSMutableArray alloc] init];
[topics addObject:@"Noodles"];
[topics addObject:@"Rice"];
[topics addObject:@"Meat"];
[topics addObject:@"Vegetables"];
[topics addObject:@"Favorites"];
noodle = [[NSMutableArray alloc] init];
[noodle addObject:@"Fried Noodles"];
[noodle addObject:@"Shanghai Noodles"];
meat = [[NSMutableArray alloc] init];
[meat addObject:@"Ginger Beef"];
[meat addObject:@"Lemon Chicken"];
[meat addObject:@"Salt & Pepper Ribs"];
[meat addObject:@"Sweet & Sour Pork"];
vegatable = [[NSMutableArray alloc] init];
[vegatable addObject:@"Assorted Vegetables"];
rice = [[NSMutableArray alloc] init];
[rice addObject:@"Fried Rice"];
items = noodle;
[super viewDidLoad];
}
- (void)viewDidUnload
{
[super viewDidUnload];
}
@end