在 UINavigationItem 中隐藏 UIBarButtonItems 时遇到问题
Having trouble hiding UIBarButtonItems in UINavigationItem
我目前有一个用 Objective-C 编写的自定义 UINavigationController,它有一个实现
的 rootViewController
- (UINavigationItem *)navigationItem
实现看起来像这样:
- (UINavigationItem *)navigationItem {
UINavigationItem *item = [[UINavigationItem alloc] initWithTitle:@"Map Search"];
item.backBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@" " style:UIBarButtonItemStylePlain target:nil action:nil];
UIBarButtonItem *leftBarButtonItem = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"btn_menu"] style:UIBarButtonItemStylePlain target:self action:@selector(leftBarButtonPressed:)];
item.leftBarButtonItem = leftBarButtonItem;
UIBarButtonItem *rightBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"Other Button" style:UIBarButtonItemStylePlain target:self action:@selector(otherButtonPressed:)];
item.rightBarButtonItem = rightBarButtonItem;
return item;
}
这工作正常,并按预期在我的 rootViewController 的导航栏中显示我的按钮。但是,当我尝试隐藏栏按钮项时,什么也没有发生。我已经尝试将按钮设置为 nil 并创建 UIBarButtonItem 强属性,以便稍后将对 return 按钮的引用保留到以前的状态,例如
self.navigationController.navigationItem.rightBarButtonItem = nil;
...
self.navigationController.navigationItem.rightBarButtonItem = _strongPropertyUIBarButtonReference;
我也尝试通过
引用按钮
self.navigationItem.rightBarButtonItem
我试过用字母 属性 隐藏这些按钮。我尝试在我的自定义 UINavigationController class 中创建一个方法,将条形按钮项目引用设置为 nil。都无济于事。任何帮助将不胜感激。
当您想在导航栏上添加一个按钮时,您可以创建一个 UIBarButtonItem 并将其传递给 self.navigationItem.rightBarButtonItem。
当你想隐藏这个条形按钮时,你直接把它设为nil就可以了。这将隐藏按钮。 self.navigationItem.rightBarButtonItem = 无;
我终于找到了解决办法。我必须执行以下操作:
self.navigationController.navigationBar.topItem.leftBarButtonItem = nil;
self.navigationController.navigationBar.topItem.rightBarButtonItem = nil;
浏览导航栏的 topItem 是关键。然后我使用强大的 UIBarButtonItem 属性恢复到初始未隐藏状态。
我目前有一个用 Objective-C 编写的自定义 UINavigationController,它有一个实现
的 rootViewController- (UINavigationItem *)navigationItem
实现看起来像这样:
- (UINavigationItem *)navigationItem {
UINavigationItem *item = [[UINavigationItem alloc] initWithTitle:@"Map Search"];
item.backBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@" " style:UIBarButtonItemStylePlain target:nil action:nil];
UIBarButtonItem *leftBarButtonItem = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"btn_menu"] style:UIBarButtonItemStylePlain target:self action:@selector(leftBarButtonPressed:)];
item.leftBarButtonItem = leftBarButtonItem;
UIBarButtonItem *rightBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"Other Button" style:UIBarButtonItemStylePlain target:self action:@selector(otherButtonPressed:)];
item.rightBarButtonItem = rightBarButtonItem;
return item;
}
这工作正常,并按预期在我的 rootViewController 的导航栏中显示我的按钮。但是,当我尝试隐藏栏按钮项时,什么也没有发生。我已经尝试将按钮设置为 nil 并创建 UIBarButtonItem 强属性,以便稍后将对 return 按钮的引用保留到以前的状态,例如
self.navigationController.navigationItem.rightBarButtonItem = nil;
...
self.navigationController.navigationItem.rightBarButtonItem = _strongPropertyUIBarButtonReference;
我也尝试通过
引用按钮self.navigationItem.rightBarButtonItem
我试过用字母 属性 隐藏这些按钮。我尝试在我的自定义 UINavigationController class 中创建一个方法,将条形按钮项目引用设置为 nil。都无济于事。任何帮助将不胜感激。
当您想在导航栏上添加一个按钮时,您可以创建一个 UIBarButtonItem 并将其传递给 self.navigationItem.rightBarButtonItem。 当你想隐藏这个条形按钮时,你直接把它设为nil就可以了。这将隐藏按钮。 self.navigationItem.rightBarButtonItem = 无;
我终于找到了解决办法。我必须执行以下操作:
self.navigationController.navigationBar.topItem.leftBarButtonItem = nil;
self.navigationController.navigationBar.topItem.rightBarButtonItem = nil;
浏览导航栏的 topItem 是关键。然后我使用强大的 UIBarButtonItem 属性恢复到初始未隐藏状态。