我需要在UINavigationController的UIToolbar中添加按钮,这也是我的根。我希望在显示特定的UIViewController时显示UIToolbar。因此,我将此代码放在我的UIViewController子类的viewDidLoad方法中:
UIBarButtonItem* item = [[UIBarButtonItem alloc] initWithTitle:@"Title" style:UIBarButtonItemStyleBordered target:self action:@selector(doSomething)];
item.width = 300;
item.tintColor = [UIColor whiteColor];
UIBarButtonItem* item2 = [[UIBarButtonItem alloc] initWithTitle:@"Title2" style:UIBarButtonItemStyleBordered target:self action:@selector(doSomething)];
NSMutableArray* theItems = [self.navigationController.toolbar.items mutableCopy];
[theItems addObject:item];
[theItems addObject:item2];
[self.navigationController.toolbar setBarStyle:UIBarStyleBlackOpaque];
[self.navigationController setToolbarHidden:NO animated:YES];
[self.navigationController setToolbarItems:theItems animated:NO];
//self.navigationController.toolbarItems = theItems; // Tried both
UILabel* label = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 100, 20)];
label.text = @"kjhdkjhadsda";
[self.navigationController.toolbar addSubview:label];
这仅显示UILabel处于正确位置,不显示任何其他内容。 UILabel对我来说没用,只是一个考验。我还尝试分配一个新数组,而不是从组件中复制一个。忽略丢失的版本,这只是测试代码。
我读了很多关于此的问题,但似乎没有任何答案可以帮助它成功。知道这段代码可能没什么问题吗?
答案 0 :(得分:2)
似乎你正在尝试在行
中制作 nil 的可变副本[self.navigationController.toolbar.items mutableCopy];
默认方法 navigationController.toolbar.items 没有项目并返回 nil
<强>更新强>
方法 - (void)setToolbarItems:(NSArray *)toolbarItems animated:(BOOL)animated 如果将其发送到UINavigationController则不执行任何操作。您需要将工具栏项设置为由导航控制器管理的控制器。此行将使您的按钮可见:
[self setToolbarItems:theItems animated:NO];