iPad拆分视图,uisplitview中的多个主视图和详细视图
Posted
技术标签:
【中文标题】iPad拆分视图,uisplitview中的多个主视图和详细视图【英文标题】:multiple master and detail views in iPad split view, uisplitview 【发布时间】:2011-03-08 16:35:20 【问题描述】:提前谢谢。我目前正在开发一个应用程序的 iPad 版本,该应用程序在 iphone 上有 3 个选项卡,每个选项卡加载 3 个不同的 rss 提要,然后使用 iPhone 上的导航控制器深入了解详细信息。在 iPad 上,有意义的是我在第一个拆分视图中加入了 2 个提要,然后为第 3 个提要有一个单独的主视图和详细信息。
实现这一点的最佳做法是什么。我目前在第一个detailview中设置了一个工具栏按钮,它调用appdelegate来切换master和detail
- (void)switchViews
VideoSelectorViewController *masterViewController = nil;
VideoDetailiPadViewController *detailViewController = nil;
UIViewController *tempDetail = [self.splitViewController.viewControllers objectAtIndex:1];
UIViewController *tempMaster = [self.splitViewController.viewControllers objectAtIndex:0];
[tempDetail.view removeFromSuperview];
[tempMaster.view removeFromSuperview];
[tempDetail release];
[tempMaster release];
tempDetail = nil;
tempMaster = nil;
// if (row == 1)
VideoSelectorViewController *newMasterViewController = [[VideoSelectorViewController alloc] initWithNibName:@"VideoSelectorViewController" bundle:nil];
masterViewController = newMasterViewController;
VideoDetailiPadViewController *newDetailViewController = [[VideoDetailiPadViewController alloc] initWithNibName:@"VideoDetailiPadViewController" bundle:nil];
detailViewController = newDetailViewController;
//
// Update the split view controller's view controllers array.
NSArray *viewControllers = [[NSArray alloc] initWithObjects:masterViewController, detailViewController, nil];
self.splitViewController.viewControllers = viewControllers;
[viewControllers release];
/* // Dismiss the popover if it's present.
if (popoverController != nil)
[popoverController dismissPopoverAnimated:YES];
*/
// Configure the new view controller's popover button (after the view has been displayed and its toolbar/navigation bar has been created).
// if (detailViewController.popover != nil)
[detailViewController showRootPopoverButtonItem:detailViewController.rootPopoverButtonItem];
//
[masterViewController release];
[detailViewController release];
当 iPad 处于横向但纵向时,barbutton 不会显示在工具栏中,这可以正常工作,我如何以编程方式调用 - (void)splitViewController: (UISplitViewController*)svc willHideViewController?还有我的方法的内存管理,我是否应该像我在 switchViews 方法中使用这些临时对象一样释放并设置为 nil 以前的 master 和 detail?
另一种方法是将新主人推到旧主人身上,然后替换细节。哪个更好,内存方面,性能等。再次感谢
【问题讨论】:
【参考方案1】:由于没有人能够提供任何见解,我所做的是在详细视图中创建第二个视图,该视图仅与我的第二个表视图一起使用
【讨论】:
【参考方案2】:你的 ViewController 需要 UISplitViewControllerDelegate
然后会自动调用
见http://developer.apple.com/library/ios/#documentation/uikit/reference/UISplitViewControllerDelegate_protocol/Reference/Reference.html
【讨论】:
以上是关于iPad拆分视图,uisplitview中的多个主视图和详细视图的主要内容,如果未能解决你的问题,请参考以下文章
在基于 UISplitView 的 iPad 应用程序底部添加工具栏