1

みたいなメニューがあります

ここに画像の説明を入力

選択ボタンしか表示されませんが、Hello 2を選択すると、Hello2ビューコントローラーが開きます。

私のコード:

enter code here

 - (IBAction)selectClicked:(id)sender {
NSArray * arr = [[NSArray alloc] init];
arr = [NSArray arrayWithObjects:@"Hello 0", @"Hello 1", @"Hello 2", @"Hello 3", @"Hello   4", @"Hello 5", @"Hello 6", @"Hello 7", @"Hello 8", @"Hello 9",nil];
NSArray * arrImage = [[NSArray alloc] init];
arrImage = [NSArray arrayWithObjects:[UIImage imageNamed:@"apple.png"], [UIImage    imageNamed:@"apple2.png"], [UIImage imageNamed:@"apple.png"], [UIImage imageNamed:@"apple2.png"], [UIImage imageNamed:@"apple.png"], [UIImage imageNamed:@"apple2.png"], [UIImage imageNamed:@"apple.png"], [UIImage imageNamed:@"apple2.png"], [UIImage imageNamed:@"apple.png"], [UIImage imageNamed:@"apple2.png"], nil];
if(dropDown == nil) {
    CGFloat f = 200;
    dropDown = [[NIDropDown alloc]showDropDown:sender :&f :arr :arrImage :@"down"];
    dropDown.delegate = self;
}
else {
    [dropDown hideDropDown:sender];
    [self rel];
}
 }

-(void)rel{
//    [dropDown release];
  dropDown = nil;
 }
4

4 に答える 4

3

わかりました..私が間違っていなければ、これはあなたが使用しているクラスですhttps://github.com/BijeshNair/NIDropDown/blob/master/NIDropDown.m

この方法を見たら

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {

// Before you do hiding of the table just pass the indexPath as a tag to the button.
btnSender.tag = indexPath.row;
[self hideDropDown:btnSender];
}

したがって、-rel が呼び出されると、ボタン タグを使用して新しいビュー コントローラーを開くことができます。

-(void)rel{
   // use button tag to open respective view controller here.
  dropDown = nil;
}
于 2013-05-29T09:34:33.520 に答える
2

コードを変更することで、これを行うことができます

このNIDropDown.hコードを追加して

@property (nonatomic, retain) NSString * str;

このNIDropDown.mコードを追加して

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    [self hideDropDown:btnSender];

    UITableViewCell *c = [tableView cellForRowAtIndexPath:indexPath];
    [btnSender setTitle:c.textLabel.text forState:UIControlStateNormal];

    NSLog(@"%@",c.textLabel.text);

    self.str = c.textLabel.text;   //here we are setting our str variable for later use

    for (UIView *subview in btnSender.subviews) {
        if ([subview isKindOfClass:[UIImageView class]]) {
            [subview removeFromSuperview];
        }
    }
    imgView.image = c.imageView.image;
    imgView = [[UIImageView alloc] initWithImage:c.imageView.image];
    imgView.frame = CGRectMake(5, 5, 25, 25);
    [btnSender addSubview:imgView];
    [self myDelegate];
}

このNIViewController.mコードを追加して

- (void) niDropDownDelegateMethod: (NIDropDown *) sender {
    if ([sender.str isEqualToString:@"Hello0"]){
        //Put hello0VC transition code
        NSLog(@"dilip hello0");
    }else if ([sender.str isEqualToString:@"Hello1"]) {
        //Put hello1VC transition code
        NSLog(@"dilip hello1");
    }else if ([sender.str isEqualToString:@"Hello2"]){
        //Put hello2VC transition code
        NSLog(@"dilip hello2");
    }else if ([sender.str isEqualToString:@"Hello3"]){
        //Put hello3VC transition code
        NSLog(@"dilip hello3");
    }else if ([sender.str isEqualToString:@"Hello4"]){
        //Put hello4VC transition code
        NSLog(@"dilip hello4");
    }
    [self rel];
}
于 2013-05-29T09:38:47.543 に答える
2

そのために、カスタム PickerView を作成し、その中でこの種のビューを必要に応じて取得できます。

そして、pickerView のデリゲート メソッドを実装する必要があります。

-(void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row
      inComponent:(NSInteger)component
{
  if (row==0)
    {
        Hello1VC *VC1=[[Hello1VC alloc]initWithNibName:@"Hello1VC" bundle:nil];
        [self presentModalViewController:VC1 animated:YES];
    }
}

同様に、インデックスを確認し、それに基づいてViewControllerを表示できます

于 2013-05-29T09:45:56.027 に答える