使用 UIToolbar 帮助修复 UIViewController

Posted

技术标签:

【中文标题】使用 UIToolbar 帮助修复 UIViewController【英文标题】:Help Fixing UIViewController with a UIToolbar 【发布时间】:2010-08-04 02:19:33 【问题描述】:

我有一个顶部有导航栏的应用。在作为 UITableView 子类的一个视图中,我使用以下代码在 UITableView 下方添加了一个 UIToolbar:

UIToolbar *toolbar = [[UIToolbar alloc] init];
[toolbar sizeToFit]; // Set the toolbar to fit the width of the app
CGFloat toolbarHeight = [toolbar frame].size.height; // Calculate the height of the toolbar
CGRect rootViewBounds = self.parentViewController.view.bounds;
CGFloat rootViewHeight = CGRectGetHeight(rootViewBounds);
CGFloat rootViewWidth = CGRectGetWidth(rootViewBounds);
CGRect rectArea = CGRectMake(0, toolbarHeight, rootViewWidth, toolbarHeight);
[toolbar setFrame:rectArea];
[self.navigationController.view addSubview:toolbar];

问题在于工具栏位于 UITableView 的“顶部”,并且遮盖了 UITableView 第一行内容的顶部。我真正想要的是表格视图在 UIToolbar 下方“开始”。

我如何正确地完成这项工作?

感谢, 何塞

【问题讨论】:

【参考方案1】:

我同意 nonamelive,但如果有理由需要您描述的逻辑。您应该使视图成为具有 UITableView 子视图和工具栏子视图的普通视图,并相应地设置它们的框架以根据需要定位它们。

如果您希望工具栏与其他表格内容一起滚动,另一个选项是将表格的 headerView 设为工具栏。

【讨论】:

【参考方案2】:

在我看来,初始化一个新工具栏是错误的做法。

只需使用这个简单的代码,因为您已经有了 UINavigationController。

- (void)viewDidLoad 
    self.navigationController.toolbar.hidden = NO;

我很抱歉错误的代码。试试这个吧!

- (void)viewDidLoad 
    self.navigationController.toolbarHidden = NO;

【讨论】:

嗯。这在viewDidLoad 中没有做任何事情,但是如果我将此代码附加到按钮上,那么它确实可以工作。为什么会这样?

以上是关于使用 UIToolbar 帮助修复 UIViewController的主要内容,如果未能解决你的问题,请参考以下文章

UIScrollView 中的 UIToolbar 修复了 UIViewController 作为子视图滚动问题

iOS7 上的 UIToolbar 样式

iPhone X 模拟器上的 UIToolBar 位置

将 UIView 插入 UIToolbar

更改 UIToolbar 的背景图片

使 UIToolbar 消失