2012-04-02 11 views
5

Ho un UIActionSheet per iPad, che ha tre opzioni:UIStatusBarStyleBlackTranslucent non è disponibile su questo dispositivo

  1. Annullare
  2. Camera
  3. Fototeca

Quando tocco il "Photo Library "opzione Prendo un incidente e un messaggio

UIStatusBarStyleBlackTranslucent non è disponibile su questo dispositivo.

Ho letto this post, ma non l'ho capito.

Qualcuno può aiutarmi?

Aggiornamento:

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

    if (buttonIndex == 0) 
    { 

     imgController = [[UIImagePickerController alloc] init]; 
     imgController.allowsEditing = YES; 
     imgController.sourceType = UIImagePickerControllerSourceTypeCamera; 
     imgController.delegate=self; 
     [self presentModalViewController:imgController animated:YES]; 

    } 
    else if (buttonIndex == 1) 
    { 
     imgController = [[UIImagePickerController alloc] init]; 
     imgController.sourceType = UIImagePickerControllerSourceTypePhotoLibrary; 
     imgController.delegate=self; 
     [self presentModalViewController:imgController animated:YES]; 
} 
} 

ottengo crash nell'ultima riga cioè [self presentModalViewController:imgController animated:YES];

+1

Leggi quale messaggio? – BoltClock

+0

Siamo spiacenti. Perso. Ora modificato. Si prega di controllare. – Nitish

risposta

0

Provare a rimuovere le impostazioni della barra di stato dal file plist tutti insieme e aggiungendo quanto segue al AppDelegate'sapplicationDidFinishLaunchingWithOptions:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 
[[UIApplication sharedApplication] setStatusBarStyle: UIStatusBarStyleBlackTranslucent]; 
} 

AGGIORNAMENTO:

Prova questa

-(void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex { 
switch (buttonIndex) 
{ 
    case 0: 
    { 

     imgController = [[UIImagePickerController alloc] init]; 
     imgController.allowsEditing = YES; 
     imgController.sourceType = UIImagePickerControllerSourceTypeCamera; 
     imgController.delegate=self; 
     [self presentModalViewController:imgController animated:YES]; 

    } 
    case 1: 
    { 
     imgController = [[UIImagePickerController alloc] init]; 
     imgController.sourceType = UIImagePickerControllerSourceTypePhotoLibrary; 
     imgController.delegate=self; 
     [self presentModalViewController:imgController animated:YES]; 
    } 
} 
} 
+0

No, non è stato d'aiuto. Si prega di consultare la mia domanda modificata. – Nitish

+0

Controlla l'aggiornamento, questa è l'unica cosa che vedo immediatamente che avrei fatto diversamente. –

+0

Qual è la differenza ??? – Nitish

0

Un po 'in ritardo, ma è la cosa UIViewController chiamando presentModalViewController:animated: un figlio di un UIPopoverController? Se è così, ecco cosa sta causando questo. Prova a chiamare dal popovers parentViewController

1

Prova sottostante Codice sue opere per me perfetta

- (void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex: (NSInteger)buttonIndex 
{ 
if(buttonIndex==0) 
    { 
    [self takePhoto]; 

    } 
else if(buttonIndex==1) 
    { 
    [self choosePhoto]; 
    } 
} 


-(void)takePhoto 
{ 
UIDevice *device = [UIDevice currentDevice]; 

NSString *currDevice = [device model]; 

NSLog(@"device is %@",currDevice); 

    if(![currDevice isEqualToString:@"iPhone Simulator"]) 
     { 
     [[UIApplication sharedApplication] setStatusBarOrientation:UIInterfaceOrientationPortrait]; 
    UIImagePickerController *imgPickerCon = [[UIImagePickerController alloc] init]; 
    imgPickerCon.sourceType = UIImagePickerControllerSourceTypeCamera; 
    imgPickerCon.delegate = self; 
    [self presentModalViewController:imgPickerCon animated:YES]; 
    [imgPickerCon release]; 
    imgPickerCon = nil; 
    } 
    else{ 
    UIAlertView *alrt=[[UIAlertView alloc] initWithTitle:@"Message" message:@"Camera Will Not Open in Simulator" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil]; 
    [alrt show]; 
    [alrt release]; 
} 
} 

-(void)choosePhoto 
{ 

[[UIApplication sharedApplication] setStatusBarOrientation:UIInterfaceOrientationPortrait]; 
UIImagePickerController *imgPickerCon = [[UIImagePickerController alloc] init];  
imgPickerCon.sourceType = UIImagePickerControllerSourceTypePhotoLibrary; 
imgPickerCon.delegate = self; 
[self presentModalViewController:imgPickerCon animated:YES];   
[imgPickerCon release]; 
imgPickerCon = nil; 
    } 


    - (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker{ 
[picker dismissModalViewControllerAnimated:YES]; 
} 

    - (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingImage:(UIImage *)myimage editingInfo:(NSDictionary *)editingInfo 
    { 


[picker dismissModalViewControllerAnimated:YES]; 
image=myimage; 

imgView.image=myimage; 

    } 
10

per iPad si raccomanda che si dovrebbe usare popover per presentare il MediaBrowser (fotocamera/Photolibrary):

UIImagePickerController *ipc = [[UIImagePickerController alloc] init]; 

UIPopoverController *popOverController = [[UIPopoverController alloc] initWithContentViewController:ipc]; 
popOverController.delegate = self; 

È anche possibile impostare la visualizzazione di contenuti per popover:

ipc.delegate = self; 
ipc.editing = NO;  
ipc.sourceType = UIImagePickerControllerSourceTypePhotoLibrary; 
ipc.mediaTypes =[UIImagePickerController availableMediaTypesForSourceType:ipc.sourceType]; 

[popOverController presentPopoverFromRect:btnGallery.frame inView:self.view permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES]; 
0

Proprio come hai sottolineato con the post che hai letto, la soluzione semplice sarebbe aggiungere una riga in plist con il seguente valore-chiave

UIStatusBarStyle ~ ipad | Stringa | UIStatusBarStyleBlackOpaque

(3rd row in the picture here, sorry cause I can't post image yet now)

Questa è una delle soluzioni, se non si vuole fare troppo "lavoro sporco" sui codici lì, basta lasciare al plist per ottenere il lavoro fatto.

Ma se non ti dispiace scrivere codici, la soluzione fornita da VSN farà lo stesso del mio suggerimento.

Problemi correlati