iOS - 与rightBarButtonItem相反的nil

时间:2013-06-01 18:48:20

标签: ios uinavigationbar

在我将其设置为nil之后,我需要重新显示一个按钮,但我似乎无法弄明白。

我使用

将其设置为nil
self.navigationItem.rightBarButtonItem =nil;

4 个答案:

答案 0 :(得分:3)

当你将按钮设置为nil时,你会销毁(解除分配)它。只需重新创建按钮。或者,如果由于某种原因创建成本很高,请创建另一个保存按钮的属性,然后使用该属性恢复rightBarButtonItem

答案 1 :(得分:2)

要求将按钮设置为nil?另一种方法是将按钮的背景alpha设置为0,或者使用setEnabled:NO禁用它。如果这是一项要求,您有两种选择:

  • 将按钮存储为属性,并将按钮分配给navigationItem的rightBarButtonItem。确保对财产进行所有按钮操作。

  • 使用按钮创建一个创建UINavigationItem实例的方法,并将此按钮指定给rightBarButtonItem。顺便说一下,如果你想要在nil赋值中拥有完全相同的实例,你必须使用第一个选项。

希望它有所帮助!

答案 2 :(得分:0)

UIBarButtonItem *doneButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(done)];
[self.navigationItem setRightBarButtonItem:doneButton animated:YES]

答案 3 :(得分:0)

通过将引用设置为nil来隐藏按钮,但是如果您想稍后恢复它,则需要挂起它的副本以便重新分配。

UIBarButtonItem *oldButton = self.navigationItem.rightBarButtonItem;
[oldButton retain];
self.navigationItem.rightBarButtonItem = nil;

//... later
self.navigationItem.rightBarButtonItem = oldButton;
[oldButton release];

或者创建barbuttonitem的属性,并在需要时立即传递它。

@property (nonatomic, retain) UIBarButtonItem *rightNavButton;
self.navigationItem.rightBarButtonItem = self.rightNavButton;