2013-08-06 38 views
1

我正在为学习目的制作一个notes应用程序,并且遇到UIBarButton问题。如何在编辑UItextview时交换UIBarbuttons

的问题

当我点击TextView的开始编辑,我想正确的barbutton更改为“完成”,使得用户可以关闭键盘与它(和自动保存在后台)。我的问题是让用户按下“完成”后,按钮返回到我原来的rightbarbutton。

什么我试过到目前为止

我已经试过使得原来的位置来看的属性,但在我看来,故事板代表barbuttons的位置,而不是实际的实体。所以这是不成功的,因为当我尝试时我只有一个空白点。

我已经找遍了所有的答案,但我没有得到一个。请帮帮我。

回答

0

你是对的UIBarButtonItem不是视图,它们只是描述视图的对象。所以设置一个框架或中心是不可能的。

你需要做的是创建两个UIBarButtonItems一个编辑和一个完成。然后使用UIToolBar方法或属性,您需要删除编辑按钮,但稍后保留,并将done按钮放置到位。完成后逆转交换。

您可以通过toolbar.items获取UIToolBar的条目,它将是NSArray。然后你可以removeObjectAtIndex:删除编辑按钮。然后你可以insertObject:atIndex:添加你的完成按钮。然后回到UIToolBarsetItems:animated

// Get current items 
NSMutableArray *temp = [toolBar.items mutableCopy]; 

// Check for editing, with your own variable, then insert/remove buttons 
if (/*Editing*/) { 
    [temp removeObject:editButton]; 
    [temp insertObject:doneButton atIndex:0]; 
} else { 
    [temp removeObject:doneButton]; 
    [temp insertObject:editButton atIndex:0]; 
} 

// Send back to your toolbar 
[toolBar setItems:temp animated:YES]; 
+0

如果我在uibarbutton中使用自定义按钮,这仍然可以吗?我在执行交换时如何将所有的细节(backgrnd图像等)转移到代码中? – Josh

+0

无论你对UIBarButtonItem做了什么,它都能正常工作。你所需要做的就是把它作为一个变量或属性来保存,这样它就不会被释放。 –

+0

好吧,我会给它一个感谢:) – Josh

相关问题