J'ai un onglet avec splitviewcontroller sur chaque élément. J'ai utilisé une sous-classe de ce site https://github.com/grgcombs/IntelligentSplitViewController et dans iOS 4 tout a bien fonctionné, mais dans iOS 5, j'ai un problème. Quand je démarre l'application en mode portrait, puis changez en paysage et allez au deuxième élément dans la barre d'onglets, puis à nouveau passer en mode portrait et cliquez sur le popover, puis rejeter le popover, allez au premier élément dans tabbar, encore popover ouvert et changer pour le paysage, la vue principale disparaît et Popover est encore visible. Quelqu'un at-il une idée de comment le réparer?UISplitViewController dans UITabBarController dans iOS 5
2
A
Répondre
1
J'ai travaillé sur la résolution du même problème. Au lieu d'utiliser la sous-classe UISplitViewController que vous indiquez, j'ai créé une sous-classe UITabBarController qui propage proprement les messages de rotation à tous les UISplitViewControllers qu'elle contient. Cela maintient l'état interne correct des UISplitViewControllers. Cependant, l'une des méthodes de délégué de SplitViewController n'est pas appelée si le SplitViewController n'est pas visible, donc je gère cela dans le contrôleur de vue détaillée. J'ai confirmé cela fonctionne dans iOS5.0 - iOS6.1
OSTabBarController.m
#import "OSTabBarController.h"
@implementation OSTabBarController
-(void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration{
[super willRotateToInterfaceOrientation:toInterfaceOrientation duration:duration];
for(UIViewController *targetController in self.viewControllers){
if(targetController != self.selectedViewController && [targetController isKindOfClass:[UISplitViewController class]]){
[targetController willRotateToInterfaceOrientation:toInterfaceOrientation duration:duration];
}
}
}
-(void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation{
[super didRotateFromInterfaceOrientation:fromInterfaceOrientation];
for(UIViewController *targetController in self.viewControllers){
if(targetController != self.selectedViewController && [targetController isKindOfClass:[UISplitViewController class]]){
[targetController didRotateFromInterfaceOrientation:fromInterfaceOrientation];
}
}
}
@end
DetailViewController
@implementation OSDetailViewController
-(void)viewWillAppear:(BOOL)animated{
//the splitViewController:willHideViewController:withBarButtonItem:forPopoverController: may not have been called
if(!UIInterfaceOrientationIsPortrait(self.interfaceOrientation)){
self.navigationItem.leftBarButtonItem = nil;
}
}
#pragma mark - UISplitViewControllerDelegate Methods
- (void)splitViewController:(UISplitViewController *)splitController willHideViewController:(UIViewController *)viewController withBarButtonItem:(UIBarButtonItem *)barButtonItem forPopoverController:(UIPopoverController *)popoverController
{
[self.navigationItem setLeftBarButtonItem:barButtonItem animated:YES];
}
- (void)splitViewController:(UISplitViewController *)splitController willShowViewController:(UIViewController *)viewController invalidatingBarButtonItem:(UIBarButtonItem *)barButtonItem
{
[self.navigationItem setLeftBarButtonItem:nil animated:YES];
}
@end
Questions connexes
- 1. UITabbarController dans UiSplitViewController
- 2. UITabBarController + UISplitviewController alternatives?
- 3. Comment revenir depuis UISplitViewController IOS 5?
- 4. UIViewController et UISplitViewController dans UITabBarController shouldAutorotateToInterfaceOrientation
- 5. UISplitViewController n'appelant pas la méthode view delegate dans ios 5
- 6. iOS 5 et iOS 6 UITabBarController MoreNavigationViewController rotation
- 7. Appelez UISplitViewController depuis un autre UIViewController dans une application UITabBarController
- 8. Comment définir l'arrière-plan de l'image pour UITabBarController iOS 5
- 9. UITabBarController Problèmes de rotation dans ios 6
- 10. Restauration de l'état UISplitViewController dans iOS 8
- 11. UILocalNotification dans iOS 5
- 12. @autoreleasepool dans ios 5
- 13. UICollectionView dans ios 5
- 14. Gérer les sockets dans iOS avec uitabbarcontroller
- 15. Écart dans UITabBarController dans UINavigationController
- 16. rejetant UINavigationController dans iOS 5
- 17. MKMapItem reconnu dans iOS 5?
- 18. iOS8 TabbarController dans un UISplitviewController Maître
- 19. Problème d'orientation avec UITabBarController iOS
- 20. If-statement dans prepareForeSegue dans iOS 5
- 21. MapView montrant dans l'océan dans ios 5
- 22. ios uiviewcontroller enfant de uitabbarcontroller
- 23. UISplitViewController dans XCode 6 pour iOS 7 app
- 24. dateFromString travaillant dans ios 6 mais pas dans ios 5
- 25. Vue active dans UITabBarController
- 26. Bug dans UITabBarController?
- 27. Transition de page iOS avec UISplitViewController
- 28. UISplitViewController dans l'application ViewBased?
- 29. UITableViewController dans UISplitViewController
- 30. Problème dans UISplitViewController dans l'iPad
Je n'ai pas testé à fond, mais cette approche a du sens et jusqu'à présent semble avoir résolu le problème. – Chiubaka
Super! Cela a bien fonctionné pour moi dans de nombreuses applications de production. –