Ios 如果在脚本中创建UIToolbar按钮,如何以编程方式更改?
在故事板中,我创建了一个DetailViewController,底部有一个UIToolbar和一个按钮 在某些特殊情况下,我希望为这个视图控制器提供一组可选的按钮 当我想用额外的按钮以模式显示视图控制器时,我必须从情节提要以编程方式初始化视图控制器,如下所示:Ios 如果在脚本中创建UIToolbar按钮,如何以编程方式更改?,ios,storyboard,uitoolbar,Ios,Storyboard,Uitoolbar,在故事板中,我创建了一个DetailViewController,底部有一个UIToolbar和一个按钮 在某些特殊情况下,我希望为这个视图控制器提供一组可选的按钮 当我想用额外的按钮以模式显示视图控制器时,我必须从情节提要以编程方式初始化视图控制器,如下所示: DetailViewController *controller = [self.storyboard instantiateViewControllerWithIdentifier:@"Detail"]; [controller n
DetailViewController *controller = [self.storyboard instantiateViewControllerWithIdentifier:@"Detail"];
[controller newButtons:YES];
[self presentViewController:controller animated:YES completion:nil];
在DetailViewController.m文件中,我有上面调用的方法:
-(void) newButtons: (BOOL) isNew
{
if (isNew) {
UIBarButtonItem *doneItem = [[UIBarButtonItem alloc]
initWithBarButtonSystemItem:UIBarButtonSystemItemDone
target:self
action:@ selector( save:)];
UIBarButtonItem *cancelItem = [[UIBarButtonItem alloc]
initWithBarButtonSystemItem:UIBarButtonSystemItemCancel
target:self
action:@ selector( cancel:)];
NSArray *buttonArr = [[NSArray alloc] initWithObjects:doneItem, cancelItem, nil];
[self.toolbar setItems:buttonArr animated:YES];
}
}
我已经创建了一个从故事板到DetailViewController.m文件的出口,方法是单击一个拖动到文件顶部的按钮,该按钮将:
@property (weak, nonatomic) IBOutlet UIToolbar *toolbar;
这些都是步骤,但当我单击按钮显示视图控制器时,它只显示带有故事板中原始按钮的视图控制器,而不是我通过编程添加的两个新按钮。
为什么它没有显示新按钮。我从newButtons方法中记录了一条测试语句,它肯定会调用它。只是没有添加按钮
更新:
我在[self.toolbar setItems:animated]中添加了断点,它没有调用该语句,即使调用了该方法。self.toolbar为空 为什么它是空的?I cntrl单击拖动到DetailViewController.m的顶部并添加它。我尝试了强属性和弱属性 变化
@property (weak, nonatomic) IBOutlet UIToolbar *toolbar;
到
还加
NSLog(@"%@", self.toolbar );
使用newButtons方法检查工具栏是否有效。啊,我找到了答案视图控制器在您呈现之前不会初始化强> 所以我不得不改变代码的顺序。当我打电话时:
[controller newButtons:YES];
致电前:
[self presentViewController:controller animated:YES completion:nil];
self.toolbar未初始化
我必须首先展示视图控制器,然后self.toolbar就出现了
[self presentViewController:controller animated:YES completion:nil];
[controller newButtons:YES];
感谢@Avt&@rmmaddy帮助我调试在调用
setItems:animated:
self.toolbar上的设置断点。确认已到达断点,然后确保self.toolbar
不是nil
。我将断点添加到[self.toolbar setItems:animated]中,即使调用了该方法,它也没有调用该语句。self.toolbar为空。为什么它是空的?我单击并拖动到DetailViewController.m的顶部,使其成为强指针?我尝试了此操作,但没有任何更改。同样的错误。log语句正在打印出null。工具栏无效,怎么回事?从故事板我直接拖到文件的顶部,它为我创建了一个出口。所以问题出在无效的工具栏上。对不起,没有足够的信息让我给你提建议。
[self presentViewController:controller animated:YES completion:nil];
[controller newButtons:YES];