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 删除应用程序色调颜色

在基于 UISplitView 的 iPad 应用程序底部添加工具栏

ipad - 拆分视图

在 ipad 设计布局中一次显示多个详细信息视图

UISplitView - 为 masterView 中的每一行加载不同的 detailView

拆分视图中的集合视图控制器不更新