Objective c 添加uibarbuttonim';这是一个工具条

Objective c 添加uibarbuttonim';这是一个工具条,objective-c,ios5,uitoolbar,uitoolbaritem,Objective C,Ios5,Uitoolbar,Uitoolbaritem,我需要将按钮添加到UINavigationController的UIToolbar,它也是我的根目录。我希望在显示特定UIViewController时显示UIToolbar。因此,我将此代码放在UIViewController子类的viewDidLoad方法中: UIBarButtonItem* item = [[UIBarButtonItem alloc] initWithTitle:@"Title" style:UIBarButtonItemStyleBordered target:sel

我需要将按钮添加到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对我来说毫无用处,它只是一个测试。我还尝试分配一个新数组,而不是从组件复制一个。忽略缺少的版本,这只是测试代码


我读了很多关于这方面的问题,但似乎没有任何答案有助于它的工作。知道这段代码中有什么不好吗?

似乎您正在尝试在第行中创建nil的可变副本

默认情况下,方法navigationController.toolbar.itemsnas无项并返回nil

更新

方法-(void)setToolbarItems:(NSArray*)toolbarItems动画:(BOOL)动画如果发送到UINavigationController,则不会执行任何操作。您需要为导航控制器管理的控制器设置工具栏项。此行将使您的按钮可见:

[self setToolbarItems:theItems animated:NO];

我指定我也尝试分配一个新的。也许不清楚我指的是那个,对不起。你检查过你的self.navigationController!=无您的代码看起来不错,应该可以工作。并尝试通过UIViewController的方法[self-setToolbarItems:ItItems animated:NO]设置工具栏项;Il self.navigationController为零,我不希望显示工具栏并正确添加标签,对吗?我刚刚尝试了UIViewController中的setToolbarItems方法,也不知道它存在,但是没有按钮出现。还有别的想法吗?也许代码还可以,但可能有其他东西阻止按钮显示?似乎你没有正确理解我。我试着说self.navigationController在这个方法中可能为零,以后可以访问。请检查这个。顺便说一句,您在什么时候尝试访问navigationController(在loadView、viewDidLoad或ViewDidDisplay中)?viewDidLoad,这是我操作工具栏的唯一方法。所以我展示了它,它被展示了,我添加了按钮,这些按钮没有被展示,我放置了标签,如图所示。检查了nil self.navigationController,但它不是nil。
[self setToolbarItems:theItems animated:NO];