Le vrai problème vient, lorsque l'interface est orienté en mode paysage et le contrôleur de vue parent a une transformation à ce sujet. Croyez-moi, c'est un scénario réaliste, doh. Ensuite, la feuille d'action est tronquée et vous ne pouvez pas utiliser parentViewController car il est transformé. La solution pour éviter tous ces problèmes est de créer une nouvelle fenêtre, ajouter un contrôleur de vue rotatif comme rootViewController et utiliser sa vue pour afficher la feuille.
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];
Le code ci-dessus utilise BlocksKit, mais vous pouvez le faire aussi en utilisant les propriétés des délégués et d'instance actionSheet.
RotationViewController est juste une sous-classe UIViewController qui implémente
- (void) viewDidLoad {
[super viewDidLoad];
self.view.backgroundColor = [UIColor clearColor];
self.view.opaque = NO;
}
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
return YES;
}
S'il vous plaît ajouter un peu de code, puis facilement nous pouvons vous aider à le résoudre. – jfalexvijay
Vous ne pouvez pas utiliser l'une des méthodes showFromTabBar, si vous utilisez des tabulations personnalisées. stackr dire aux paris réponse! –
@ WinDMak3r - Oui je sais et c'est pourquoi il a obtenu 32 upvotes :) – Saawan