Cocoa touch 在UITableView上方添加工具栏以在UISplitViewController详细视图中使用

Cocoa touch 在UITableView上方添加工具栏以在UISplitViewController详细视图中使用,cocoa-touch,uitableview,ipad,uitoolbar,uisplitviewcontroller,Cocoa Touch,Uitableview,Ipad,Uitoolbar,Uisplitviewcontroller,我想在UISplitViewController中将表视图用作详细信息窗格。如何将工具栏放在顶部?我希望能够以与非表详细视图相同的方式添加栏按钮项。 谢谢。常见的范例是将UINavigationController作为主控页和详细页的顶级控制器 因此,等级制度的观点是这样的(胡说八道) 应用程序窗口 UISplitViewController 主机:UINavigationController 具有自定义控制器(tableView或UIView) 详细信息:UINavigationCo

我想在UISplitViewController中将表视图用作详细信息窗格。如何将工具栏放在顶部?我希望能够以与非表详细视图相同的方式添加栏按钮项。
谢谢。

常见的范例是将UINavigationController作为主控页和详细页的顶级控制器

因此,等级制度的观点是这样的(胡说八道)

  • 应用程序窗口
    • UISplitViewController
      • 主机:UINavigationController
        • 具有自定义控制器(tableView或UIView)
      • 详细信息:UINavigationController
        • 具有自定义控制器(UITableViewCOntroller/UIVIEWcontroller)
希望这个粗略的图表有意义

将UINavigationController作为顶级控制器的好处是,您可以免费获得工具栏

   self.navigationController.toolbar

我对这个问题的不满在于试图使用UITableViewController类,它不允许您添加其他UI元素,比如工具栏。我通过创建UIViewController对象并将工具栏和表视图分别添加到其nib中解决了这个问题。然后,我让ViewController实现表视图的委托和数据源方法。效果很好

我用另一种方法解决了这个问题:如果缺少导航栏,我只需在tableView的顶部添加一个工具栏,并在第一节中更改标题的高度。唯一的问题是工具栏与tableView一起滚动

将此添加到TableViewController的ViewDidLoad

if (! self.navigationController.navigationBar) {
    UIToolbar *toolBar = [[UIToolbar alloc] initWithFrame:CGRectMake(0, 0, self.tableView.frame.size.width, 44)];
    toolBar.barStyle = UIBarStyleBlackOpaque;
    [self.tableView addSubview:toolBar];
}
添加此方法:

- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection: (NSInteger)section
{
    return 50;
}

是的,不幸的是,正如我在问题中所说,UINavigationBar不允许添加BarButtonItems。[self.navigationController setToolbarHidden:否动画:否];这将启用“工具栏”,它与“导航栏”不同。setToolbarHidden方法将工具栏显示在底部,而不是顶部,它依赖于UINavigationContoller中包含的视图,而我的方法不是。