Ipad iOS 5中UITabBarController中的UISplitViewController
我在每个项目上都有一个带有splitviewcontroller的选项卡栏。我使用了该站点的一个子类,在iOS 4中,每个子类都工作得很好,但在iOS 5中,我遇到了一个问题。当我在纵向模式下启动应用程序,然后切换到横向并切换到选项卡栏中的第二项,然后再次切换到纵向模式并单击弹出框,然后关闭弹出框,切换到选项卡栏中的第一项,再次打开弹出框并切换到横向时,主视图消失,弹出框仍然可见。有人知道怎么解决吗?我一直在努力解决同样的问题。我没有使用您指定的UISplitViewController子类,而是创建了一个UITabBarController子类,该子类将旋转消息正确传播到它包含的所有UISplitViewController。这将保持UISPlitViewController的正确内部状态。但是,如果SplitViewController不可见,则不会调用其中一个SplitViewController委托方法,因此我将在详图视图控制器中处理此问题。我已经在iOS5.0-iOS6.1中确认了这一点 OSTabBarController.mIpad iOS 5中UITabBarController中的UISplitViewController,ipad,uitabbarcontroller,ios5,uisplitviewcontroller,Ipad,Uitabbarcontroller,Ios5,Uisplitviewcontroller,我在每个项目上都有一个带有splitviewcontroller的选项卡栏。我使用了该站点的一个子类,在iOS 4中,每个子类都工作得很好,但在iOS 5中,我遇到了一个问题。当我在纵向模式下启动应用程序,然后切换到横向并切换到选项卡栏中的第二项,然后再次切换到纵向模式并单击弹出框,然后关闭弹出框,切换到选项卡栏中的第一项,再次打开弹出框并切换到横向时,主视图消失,弹出框仍然可见。有人知道怎么解决吗?我一直在努力解决同样的问题。我没有使用您指定的UISplitViewController子类,而
#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
我还没有对此进行彻底测试,但这种方法是有意义的,到目前为止似乎已经解决了问题。