Ios 将右栏按钮项从';保存';至';完成';

Ios 将右栏按钮项从';保存';至';完成';,ios,uinavigationitem,Ios,Uinavigationitem,我有一个带有右BarButtonItem的NavigationItem,它的标识符最初是“Save”,用于保存我在视图上创建的实体 在我看来,我使用日期选择器。如果此日期选择器可见,“保存”按钮不应为“保存”按钮,而应为“完成”按钮。如果日期选择器不可见,“完成”按钮应再次更改为“保存” 我理解Interface Builder中的标识符,比如本地化。所以我想,我不能只是改变标题,对吗 您能告诉我如何将按钮从“保存”更改为“完成”吗?或者我是如何执行此操作的?我通常会在这里创建另一个标题为“完成

我有一个带有右BarButtonItem的NavigationItem,它的标识符最初是“Save”,用于保存我在视图上创建的实体

在我看来,我使用日期选择器。如果此日期选择器可见,“保存”按钮不应为“保存”按钮,而应为“完成”按钮。如果日期选择器不可见,“完成”按钮应再次更改为“保存”

我理解Interface Builder中的标识符,比如本地化。所以我想,我不能只是改变标题,对吗


您能告诉我如何将按钮从“保存”更改为“完成”吗?或者我是如何执行此操作的?

我通常会在这里创建另一个标题为“完成”的
uiBarButtonim
实例,并将其与正常的“保存”按钮一起保存为我的视图控制器中的实例变量。然后,当需要显示“完成”按钮时,我会在
UINavigationItem
上调用
setRightBarButtoniem:animated:
以更改按钮,并在需要时将其设置回“保存”按钮


我认为这通常比仅仅更改标题要好,因为它们是不同的动作,因此将它们连接到不同的动作方法更为合理。

马特是对的-有两个按钮,并根据需要将它们换入/换出。虽然我希望你可以跟踪一个按钮并更改标题;当你同时有两个不同的动作想要执行时,你为什么要这么做

 saveBarButton = [[UIBarButtonItem alloc] initWithTitle:@"Save" style:UIBarButtonItemStylePlain target:self action:@selector(save:)];

 doneBarButton = [[UIBarButtonItem alloc] initWithTitle:@"Done" style:UIBarButtonItemStylePlain target:self action:@selector(done:)];

谢谢,花了我一点时间后马特回答。我的实现只有一个操作。它的行为是由按钮的标记设置的。当您可以直接在按钮上设置目标操作时,按标记设置行为?太可怕了!是的,亲吻是一种方式。。。。我的建议是保持一个动作的内部结构只做一件事(在绝大多数情况下应该是可能的)。毕竟,您的操作名为saveOrDone:?我猜不是。最好有两种操作方法:save:和done: