我处于一种情况,我需要从基于选项卡的应用程序开始,并且我需要一个或多个选项卡的拆分视图.但似乎拆分视图控制器对象无法添加到tabbarController中.(虽然tabbar对象可以添加到splitviewcontroller).
问题还可以看出:我在左侧部分有一个完整的屏幕我有一个表视图,当在表中选择任何行时,弹出框应该指向该行.现在,当弹出窗口中的任何行被选中时,此弹出窗口中的行将位于所选行的左下方(仅此行可见),而另一个弹出窗口将从所选行中出现.(面包屑导航类型)
我想我清楚地解释了什么.那么有任何想法或解决方法吗?
如果我不清楚我的问题,请告诉我.
谢谢,
Madhup
使用界面构建器,创建拆分视图控制器和标签栏控制器,并将它们链接到您的插座:
@property (nonatomic, retain) IBOutlet UITabBarController *tabBarController; @property (nonatomic, retain) IBOutlet UISplitViewController *splitViewController;
在您的应用程序委托中didFinishLaunchingWithOption
,将拆分视图控制器分配给选项卡栏控制器:
splitViewController.tabBarItem = [[[UITabBarItem alloc] initWithTitle:@"Title" image:nil tag:0] autorelease]; NSArray *controllers = [NSArray arrayWithObjects:splitViewController, /* other controllers go here */ nil]; tabBarController.viewControllers = controllers; [window addSubview:tabBarController.view]; [window makeKeyAndVisible];
这将创建一个标签栏控制器(在这种情况下只有一个标签),可以在所有方向上正确显示.
我已经为UISplitViewController写了一个子类,它将监听设备方向的变化并相应地定位自己.通过这个类,我现在可以在UITabBarController中放置拆分视图,并且每个拆分视图在旋转时都会正常运行,即使它不是最前面的选项卡.我已经成功地在TexLege中部署了它并且它被批准在App Store中使用,但您的里程可能会有所不同.请参阅Github的存储库.
随意分叉和修改它,我总是有兴趣听取有关它的评论(或投诉). https://github.com/grgcombs/IntelligentSplitViewController
我做了一个示例应用程序.并发现我们可以通过编程方式执行以下操作:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { NSMutableArray *array = [NSMutableArray array]; NSMutableArray *tabArray = [NSMutableArray array]; UISplitViewController *splitViewConntroller = [[UISplitViewController alloc] init]; MainViewController *viewCont = [[MainViewController alloc] initWithNibName:@"MainViewController" bundle:nil]; [array addObject:viewCont]; [viewCont release]; viewCont = [[DetailViewController alloc] initWithNibName:@"DetailViewController" bundle:nil]; [array addObject:viewCont]; [viewCont release]; [splitViewConntroller setViewControllers:array]; [tabArray addObject:splitViewConntroller]; [splitViewConntroller release]; array = [NSMutableArray array]; splitViewConntroller = [[UISplitViewController alloc] init]; viewCont = [[MainViewController alloc] initWithNibName:@"MainViewController" bundle:nil]; [array addObject:viewCont]; [viewCont release]; viewCont = [[DetailViewController alloc] initWithNibName:@"DetailViewController" bundle:nil]; [array addObject:viewCont]; [viewCont release]; [splitViewConntroller setViewControllers:array]; [tabArray addObject:splitViewConntroller]; [splitViewConntroller release]; // Add the tab bar controller's current view as a subview of the window [tabBarController setViewControllers:tabArray]; [window addSubview:tabBarController.view]; [window makeKeyAndVisible]; return YES; }
希望这可以帮助.