Il vero problema arriva quando l'interfaccia viene ruotato al paesaggio e la controller della vista genitore ha una trasformazione su di esso. Credimi, è uno scenario realistico, doh. Quindi il foglio azione viene troncato e non è possibile utilizzare parentViewController perché viene trasformato. La soluzione per evitare tutti questi problemi è creare una nuova finestra, aggiungere un controller di visualizzazione ruotabile come rootViewController e utilizzare la sua vista per visualizzare il foglio.
CGRect applicationRect = [[UIScreen mainScreen] bounds];
UIWindow* actionSheetWindow = [[UIWindow alloc] initWithFrame:applicationRect];
RotationViewController* rootViewController = [[RotationViewController alloc] initWithNibName:nil bundle:nil];
actionSheetWindow.rootViewController = rootViewController;
[rootViewController release];
actionSheetWindow.hidden = NO;
UIActionSheet* actionSheet = [[UIActionSheet alloc] initWithTitle:nil];
[actionSheet setCancelButtonWithTitle:@"Cancel" handler:^{
actionSheetWindow.hidden = YES;
[actionSheetWindow release];
}];
[actionSheet showInView:rootViewController.view];
Il codice precedente utilizza BlocksKit, ma è possibile farlo anche usando il delegato e dell'istanza proprietà actionSheet.
RotationViewController è solo una sottoclasse UIViewController che implementa
- (void) viewDidLoad {
[super viewDidLoad];
self.view.backgroundColor = [UIColor clearColor];
self.view.opaque = NO;
}
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
return YES;
}
fonte
2012-01-11 11:32:19
si prega di inviare il vostro codice, quindi facilmente possiamo aiutare a risolverlo. – jfalexvijay
Non puoi usare nessuno dei metodi showFromTabBar, se stai usando alcuni tabbar personalizzati. stackr dire la risposta alle scommesse! –
@ WinDMak3r - Sì, lo so ed è per questo che ha ottenuto 32 upvotes :) – Saawan