2015-12-06 8 views
-2

Используйте этот код, чтобы открыть таблицу действий. На iPhone работает отлично, но на iPad он падает. Я думаю, что это из-за arm64. Вероятно, мне нужно преобразовать Actionsheet в popover.Как изменить UIactionsheet на Popover?

Как сменить этот код?

- (void)pushedNewBtn 
{ 
    UIActionSheet *sheet = [[UIActionSheet alloc] initWithTitle:nil delegate:self cancelButtonTitle:@"Cancel" destructiveButtonTitle:nil otherButtonTitles:@"Camera", @"Photo Library", nil]; 
    [sheet showInView:self.view.window]; 
} 
+1

'UIActionSheet' осуждается. Вы должны использовать 'UIAlertController', если вам не нужна поддержка iOS 7. – rmaddy

+1

BTW - когда вы отправляете вопрос о сбое, вам нужно указать сведения о сбое в вашем вопросе. Пожалуйста, уточните свой вопрос с этими деталями. – rmaddy

ответ

0

Для правильного использования UIAlertView с, которые вы должны использовать методы делегата реагировать на кнопку нажата.
В файле заголовка необходимо следующее
@interface ViewController : UIViewController <UIAlertViewDelegate>

Вы правильно установить делегат вашей UIAlertView переменной, используя следующую строку delegate:self.

Теперь, когда вы нажимаете кнопку в UIAlertView, делегат будет вызывать следующий метод

-(void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex 

Вы можете реагировать на нажатия кнопок там код, который выглядит что-то похожее на эту

switch (buttonIndex) { 
    case 0: 
     //Cancel button code goes here if needed 
     break; 
    case 1: 
     //First 'other' button code goes here 
     break; 
    case 2: 
     //second 'other' button code goes here 
     break; 
    default: 
     break; 
} 

Я надеюсь, что это помогает

+0

спасибо, что работа прекрасна! –

+0

Если это ответили на ваш вопрос, то, пожалуйста, отметьте его как принятый ответ с отметкой. Благодарю. – mylogon

0

это рабочий результат:

- (void)pushedNewBtn { 
    UIAlertView *sheet = [[UIAlertView alloc] initWithTitle:nil message:nil delegate:self cancelButtonTitle:@"Cancel" otherButtonTitles:@"Camera", @"Photo Library", nil]; 
    [sheet show]; 
} 

- (void)libraryButton { 
    UIImagePickerController *pickerLibrary = [[UIImagePickerController alloc] init]; 
    pickerLibrary.sourceType = UIImagePickerControllerSourceTypePhotoLibrary; 
    pickerLibrary.delegate = self; 
    [self presentModalViewController:pickerLibrary animated:YES]; 

} 

- (void)cameraButton { 
    UIImagePickerController *picker = [[UIImagePickerController alloc] init]; 
    picker.delegate = self; 
    picker.allowsEditing = YES; 
    picker.sourceType = UIImagePickerControllerSourceTypeCamera; 

    [self presentViewController:picker animated:YES completion:NULL]; 
} 

#pragma mark- alertView delegate PICKER 


- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex { 

    switch (buttonIndex) { 

     case 0: 
      return; 
      break; 
     case 1: 
      [self cameraButton]; 
      break; 
     case 2: 
      [self libraryButton]; 
      break; 
     default: 
      break; 
    } 
} 

, но теперь у меня есть новая проблема, Я хочу, чтобы вставить новый alertviev, но не работает

- (void)pushedSaveBtn { 

    UIAlertView *sheet2 = [[UIAlertView alloc] initWithTitle:nil message:nil delegate:self cancelButtonTitle:@"Cancel" otherButtonTitles:@"Save", nil]; 
    [sheet2 show]; 
} 

- (void)savemeButton { 

    //codice da inserire 
} 

#pragma mark- alertView2 delegate SAVER 


- (void)alertView2:(UIAlertView *)alertView2 clickedButtonAtIndex:(NSInteger)buttonIndex { 

    switch (buttonIndex) { 

     case 0: 
      return; 
      break; 
     case 1: 
      [self savemeButton]; 
      break; 
     default: 
      break; 
    } 
} 
+0

Это отдельный вопрос. Вы должны сделать новый. В ответе указан тэг вашего предупреждения, а в методе 'clickedButtonAtIndex' - команда' if', чтобы проверить, что тэг входящего предупреждения – mylogon