我正在使用this code“模拟”下拉菜单,因为它在html代码中工作。我在页面上添加了2个下拉菜单。当我在第一个下拉菜单中选择一个项目时,我的控制器需要得到通知,并且需要在此通知中给出所选下拉项目中的选定ID。如果在第一个下拉列表中选择了某个项目,我该如何通知我的控制器?此外,如何使用第一个下拉列表中的选定ID打包通知?
我使用以下代码初始化下拉列表:
ddDuration = [[UIDropDownMenu alloc] init];
[ddDuration makeMenu:txtDurationId titleArray:arrDurationIds valueArray: arrDurationNames targetView:self.view];
[ddDuration setDropdownTextColor:[UIColor whiteColor]];
[ddDuration setDropdownBackgroundColor:[UIColor darkGrayColor]];
arrDurationsId
和arrDurationNames
包含相同数量的元素。第一个包含id,后者包含名称。
然后,我想在dropdown 1
中选择一个项目时调用下面的方法。发件人需要包含dropdown 1
中所选的商品ID,以便dropdown 2
知道应将哪些内容加载到其中。
- (IBAction)didSelectCountry:(id)sender {
[ddDestination makeMenu:txtDestinationId titleArray:arrDepartureIds valueArray: arrDepartureNames targetView:self.view];
[ddDestination setDropdownTextColor:[UIColor whiteColor]];
[ddDestination setDropdownBackgroundColor:[UIColor darkGrayColor]];
}
答案 0 :(得分:0)
您可以在下载代码的同一页面中找到解决方案。检查一下
[menu1 addObserver:self forKeyPath:@"selectedValue" options:NSKeyValueObservingOptionNew context:@"menu1"];
和这个
-(void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change (NSDictionary *)change context:(NSString *)context
{
// get the selected menu and value
NSString* changedObject = context;
NSString* changedValue = [change objectForKey:NSKeyValueChangeNewKey];
NSLog(@"%@ has changed to %@", changedObject, changedValue);
// Menu 1 selected
if ([context isEqualToString:@"menu1"]){
// create a new array for menu 2.
NSArray *arrayNames2 = [[NSArray alloc] initWithObjects:
@"Erik Vanderwal",
@"Max Town",
@"Avis Villalon",
@"Hugh Salvia",
nil];
// rebuild menu 2 with the new array values
[menu2 makeMenu:textfield2 titleArray:arrayNames2 valueArray: arrayNames2 targetView:self.view];
// run makemenu with nil array values to clear the old values from menu 3
[menu3 makeMenu:textfield3 titleArray:nil valueArray: nil targetView:self.view];
}
// Menu 2 selected
if ([context isEqualToString:@"menu2"]){
NSArray *arrayNames3 = [[NSArray alloc] initWithObjects:
@"Erik Vanderwal",
@"Hugh Salvia",
nil];
[menu3 makeMenu:textfield3 titleArray:arrayNames3 valueArray: arrayNames3 targetView:self.view];
}
}