12

是否有人知道如何隐藏的UINavigationController?在我的应用程序中,我有一个编辑按钮,作为UINavigationControllerrightBarButtonItem。我想隐藏这个? UIBarButton`当一些操作完成时。隐藏导航控制器的右边栏按钮

+0

'self.navigationItem.rightBarButtonItems [1] setEnabled:NO];'如果你有一个数组,就像使用灵活空间一样。 – 2016-04-28 12:18:35

回答

11

尝试

self.navigationItem.rightBarButtonItem = nil; 

当你想回来,虽然你必须实例化一个按钮即

UIBarButtonItem *rightBarButton = 
[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemSearch 
               target:self 
               action:@selector(searchBar:)]; 
self.navigationItem.rightBarButtonItem = rightBarButton; 
[rightBarButton release]; 
+1

如果我不想重新创建对象,该怎么办?例如,我想隐藏rightBarButton来广泛的searchBar框架的navigationBar titleView。 我的意思是,隐藏是可能的,通过改变财产或东西? – 2011-11-09 12:35:48

+0

如果您想要继承UINavigationController。你可以这样做:self.topViewController.navigationItem.rightBarButtonItem = rightBarButton; self是你的UINavigationController自定义类 – 2016-11-23 20:06:51

15

躲右按钮:self.navigationItem.rightBarButtonItem = nil;

现在表现出来:

  1. 如果您在视图控制器中设置了正确的按钮,只需将其指定给self.editButtonItem,然后再将其重新指定以显示它:

    self.navigationItem.rightBarButtonItem = self.editButtonItem;

  2. 如果通过分配和初始化UIBarButtonItem在视图控制器中设置了正确的按钮,那么只需在视图控制器中保留对UIBarButtonItem的引用,并在需要显示时再指定它。

+0

我试着将rightBarButtonItem赋值给Objective C中的nil,它对我不起作用 – 2016-11-25 10:24:34

10

如果你需要隐藏/显示基于某些条件的按钮,试试这个:

if (condition) { 
    self.navigationItem.rightBarButtonItem.title = @""; 
    self.navigationItem.rightBarButtonItem.enabled = NO; 
} else { 
    self.navigationItem.rightBarButtonItem.title = @"my button title"; 
    self.navigationItem.rightBarButtonItem.enabled = YES; 
} 

这样你就不必保存到按钮的引用在一个属性或者担心关于在新按钮上布置动作。