2

我正在使用此代码“模拟”下拉菜单,因为它在 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]];

arrDurationsIdarrDurationNames包含相同数量的元素。第一个包含ID,后者包含名称。

然后我希望每当在dropdown 1. 发件人需要包含从中选择的项目 ID dropdown 1- 以便dropdown 2知道应该将哪些内容加载到其中。

- (IBAction)didSelectCountry:(id)sender {
    [ddDestination makeMenu:txtDestinationId titleArray:arrDepartureIds valueArray: arrDepartureNames targetView:self.view];
    [ddDestination setDropdownTextColor:[UIColor whiteColor]];
    [ddDestination setDropdownBackgroundColor:[UIColor darkGrayColor]];
}
4

1 回答 1

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];

    }


}
于 2012-10-25T07:23:54.293 回答