视图加载后是不是可以在工具栏上添加、删除或隐藏按钮?

Posted

技术标签:

【中文标题】视图加载后是不是可以在工具栏上添加、删除或隐藏按钮?【英文标题】:Is it possible to add, delete or hide buttons on a toolbar after the view has loaded?视图加载后是否可以在工具栏上添加、删除或隐藏按钮? 【发布时间】:2013-10-31 12:02:36 【问题描述】:

我正在尝试根据表格视图的状态更改工具栏上的可见按钮。这可能吗?

添加更多细节:我目前在表格视图中有一个练习列表。底部有一个工具栏,上面有一个“新建”按钮,允许用户创建新练习。当用户单击右上角的“编辑”时,视图进入编辑模式,我希望他们能够通过单击工具栏中现在未隐藏的“删除”按钮来删除使用多项选择的练习。在这一点上,我试图让“新”按钮消失,只留下“删除”按钮。

我可以找到很多关于如何添加工具栏和向其中添加按钮的答案,但一旦视图加载,似乎没有人处理这个问题。

我考虑过有两个不同的工具栏,每个工具栏上都有单独的按钮,然后切换哪个是隐藏的,哪个是可见的,但这会导致其他问题,所以我正在探索是否有一种简单的方法来只隐藏添加的按钮.

【问题讨论】:

只需使用新按钮更新视图控制器的toolbarItems 属性。这假设视图控制器位于导航控制器中。 【参考方案1】:

真的很简单。让我们先看看如何创建一个 UIToolbar,然后向其中添加项目,然后在运行时更改它们

self.MNToolbar=[[UIToolbar alloc] init];

self.addButton=[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:self action:@selector(importPhotos:)];

self.flexibleSpace=[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil];

self.MNToolbar.items=[[NSArray alloc] initWithObjects:flexibleSpace, addButton, flexibleSpace, nil];

[self.view addSubView:self.MNToolbar];
// don't forget to set the bounds too

这是创建它的方法。

好的,现在让我们看看如何在运行时更改它

self.deleteButton=[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCancel target:self action:@selector(deletePhotos:)];

self.MNToolbar.items=[[NSArray alloc] initWithObjects:self.deleteButton, nil];

我希望你明白这一点。如果您有任何问题,请告诉我。

【讨论】:

你为什么要创建UIToolbar?假设视图控制器在导航控制器中,导航已经提供了工具栏。只需将视图控制器的 toolbarItems 属性设置为新的工具栏项数组即可。 正如他所说“底部有一个工具栏,上面有一个按钮”。所以他不是在谈论导航控制器。

以上是关于视图加载后是不是可以在工具栏上添加、删除或隐藏按钮?的主要内容,如果未能解决你的问题,请参考以下文章

在 UITableView 上延迟 reloadData

SDI 中的 OLE 客户端。如何添加工具栏?

如何让按钮一次添加一个视图?

按下视图控制器后删除“返回”按钮

UIView 添加/删除子视图与隐藏/显示的速度

从不同的视图中删除左按钮