2013-05-29 5 views
1

У меня есть меню, какКак открыть новый контроллер просмотра с помощью кнопки меню?

enter image description here

Это показывает только кнопку выбора, но я хочу, когда я выбираю 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; 
} 
+0

установить некоторые метки к кнопке и в соответствии с кнопкой выбора, проверки которая нажата кнопкой мыши с помощью тега & open view controller. – Girish

+0

Что такое класс NIDropDown?есть ли метод showSelectRowAtIndexPath для представления таблицы? –

+0

@SharanyaKM Да, есть этот метод в NIDropDown.m. Http://pastie.org/7978703 – Mhmt

ответ

3

Ok .. Так что, если я не ошибаюсь это класс, который вы используете 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; 
} 
4

метод делегата получить вызывается при выборе таблицы

- (void) niDropDownDelegateMethod: (NIDropDown *) sender 

Узнайте, какой вариант нажимается оттуда и реализовать метод PUSH

Проблема это код не предоставляет метод для получения значения selected.You нужно изучить этот пользовательский класс NIDropDown и добавить значение, возвращающее selec Индекс Ted

Решение

.h добавить

@property (nonatomic, assign) NSInteger *selectedIndex; 

.m

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { 
    self.selectedIndex=indexPath.row;//Add this line 
    [self myDelegate]; 
} 

и ViewController

- (void) niDropDownDelegateMethod: (NIDropDown *) sender { 
    NSLog(@"%d",sender.selectedIndex); 
} 
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]; 
} 
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

Смежные вопросы