2012-03-09 3 views
0
-(void)displayActionSheet:(id)sender 
{ 
actionSheet = [[UIActionSheet alloc] 
           initWithTitle:nil 
           delegate:nil 
           cancelButtonTitle:@"Cancel" 
           destructiveButtonTitle:nil 
           otherButtonTitles:@"Devanagari", @"English", nil]; 

actionSheet.actionSheetStyle = UIActionSheetStyleBlackOpaque; 

[actionSheet showInView:self.view ]; 

[actionSheet release]; 

} 

-(void)ActionSheet:(UIActionSheet *)ActionSheet clickedButtonAtIndex:(NSInteger)buttonIndex { 

if(actionSheet == actionSheet) 
{ 
switch (buttonIndex) { 

    case 0:{ 

     //Devanagari view display 

     ButtonViewController *controller1 = [[ButtonViewController alloc]init]; 

     controller1.delegate = self; 

     UINavigationController *navigationController = [[UINavigationController alloc] 
                 initWithRootViewController:controller1]; 
     navigationController.navigationBar.tintColor = [UIColor colorWithHue:2.0/12 saturation:2.0 brightness:4.0/10 alpha:1.0]; 

     [self presentModalViewController:navigationController animated:YES]; 

     [navigationController release]; 

     break; 
    }   
} 
} 
    } 

При нажатии на кнопку деванагари он должен загрузить новый вид, но это просто отклоняя UIActionSheet без загрузки нового вида.
Я делаю что-то неправильно здесь?кнопки UIActionSheet не загружая новый вид

ответ

4

В вашем displayActionSheet method необходимо указать actionSheet.delegate = self; В противном случае методы UIActionSheetDelegate не будут вызываться.

Или предоставить делегата в методе init. В настоящее время вы устанавливаете его на nil.

Я только что подтвердил, что следующие работы:

- (void)displayActionSheet; 
{ 
    UIActionSheet *actionSheet = [[UIActionSheet alloc] initWithTitle:nil delegate:self 
                cancelButtonTitle:@"Cancel" 
               destructiveButtonTitle:nil 
                 otherButtonTitles:@"Devanagari",@"English", nil]; 
    [actionSheet showInView:self.view]; 
    [actionSheet release]; 
} 

- (void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex; 
{ 
    NSLog(@"%s - Called!",__FUNCTION__); 
} 
+0

добавлено действиеSheet.delegate = self; но все же не отображать вид измененный, что тоже делегировать: self in init – user1120133

+0

Метод делегата должен быть '- (void) actionSheet: (UIActionSheet *) actionSheet clickedButtonAtIndex: (NSInteger) buttonIndex' (обратите внимание на нижний регистр.) Можете ли вы поставить точку останова по этому методу затем подтвердить, называется ли метод? – FluffulousChimp

+0

выглядит так, как этот метод не называется. Я определил этот метод прямо под методом displayActionSheet на mainviewcontroller – user1120133

1

Убедитесь, что вы добавили делегат в интерфейсе

@interface mainviewcontroller : UIViewController <UIActionSheetDelegate> { 

} 

(EDIT), а затем изменить делегат себя

actionSheet = [[UIActionSheet alloc] 
          initWithTitle:nil 
          delegate:self 
          cancelButtonTitle:@"Cancel" 
          destructiveButtonTitle:nil 
          otherButtonTitles:@"Devanagari", @"English", nil]; 
+0

Он установил делегат на 'nil' в своем примере кода, поэтому ему также нужно будет установить его на свой контроллер. Стоит отметить. –

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