UIBarButtonItem 未显示在子视图中

Posted

技术标签:

【中文标题】UIBarButtonItem 未显示在子视图中【英文标题】:UIBarButtonItem not shown in subview 【发布时间】:2013-07-10 15:47:10 【问题描述】:

我想创建一个带有 NavigationBar 和 TableView 的子视图。在导航栏中应该有一个可以编辑 tableView 的按钮。 navigationBar 和 TableView 显示在子视图中,但 barButtonItem 不显示。我的代码中有错误,还是因为它是子视图而有问题?

UIView *tagView = [[UIView alloc] initWithFrame:CGRectMake(0, 325, screenSize.size.width, 200)];


                         tableView = [[UITableView alloc] initWithFrame:CGRectMake(-10, 40, screenSize.size.width, 150) style:UITableViewStylePlain];
                         tableView.delegate = self;
                         tableView.dataSource = self;
                         [tagView addSubview:tableView];

                         UINavigationBar *navigationBar = [[UINavigationBar alloc] initWithFrame:CGRectMake(0, 0, tagView.frame.size.width, 45)];
                         self.navigationItem.leftBarButtonItem = self.editButtonItem;
                         [tagView addSubview:navigationBar];

                         [self.view addSubview:tagInstruction];
                         [self.view addSubview:tagView];

【问题讨论】:

【参考方案1】:

self.navigationItem 指的是 navigationController 导航项,您没有任何导航控制器,您只有自定义 NavigationBar,因此它不起作用。 为了解决这个问题,您必须创建自己的 UIButton 并添加到 NavigationBar 的子视图中。

【讨论】:

【参考方案2】:

navigationItem 表示父导航栏中的视图控制器,而不是您在此处构建的导航栏中。将 Button 放入您的导航栏中。

【讨论】:

【参考方案3】:

如果我需要一个干净的导航栏,我总是将我的 UIViewControllers 放在 UINavigationController 中。它没有伤害,您可以稍后添加导航功能。然后你可以使用 self.navigationItem 添加一个 UIBarButtonItem

【讨论】:

【参考方案4】:

正如 Sven 所说,self.navigationItem 指的是 UINavigationBar 的 UINavigationItem,它属于视图控制器的父 UINavigationController。如果您想在刚刚分配的导航栏中设置按钮,请尝试以下操作:

UINavigationItem * navigationItem = [[UINavigationItem alloc] init];
navigationItem.leftBarButtonItem = self.editButtonItem;
[navigationBar setItems:@[navigationItem]];

【讨论】:

以上是关于UIBarButtonItem 未显示在子视图中的主要内容,如果未能解决你的问题,请参考以下文章

平板电脑。 UIBarButtonItem 有一个 UIToolbarTextButton 类型的未记录视图。嗯?

UIBarButtonItem在用作左侧或右侧导航栏项目时,自定义视图未在iOS 7上正确对齐

UIBarButtonItem 图像未显示,但显示为红色方块

具有自定义视图的 UIBarButtonItem 在 iOS 7 上用作左侧或右侧导航栏项目时未正确对齐

MPVolumeView AirPlay 按钮未显示

UIPickerView 委托未在子视图中调用