【发布时间】:2014-03-16 01:43:24
【问题描述】:
在故事板中,我创建了一个 DetailViewController,底部有一个 UIToolbar 和一个按钮。
在某些特殊情况下,我想为这个视图控制器提供一组替代按钮。
当我想以模态方式显示带有额外按钮的视图控制器时,我必须从情节提要中以编程方式初始化视图控制器,如下所示:
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;
这些是所有步骤,但是当我单击按钮显示视图控制器时,它只显示带有故事板中原始按钮的视图控制器,而不是我以编程方式添加的 2 个新按钮。
为什么不显示新按钮。我从 newButtons 方法记录了一个测试语句,它肯定会调用它。只是不添加按钮???
更新:
我在 [self.toolbar setItems:animated] 中添加了断点,即使调用了该方法,它也没有调用该语句。 self.toolbar 为空。
它怎么是空的?我 cntrl-click 拖到 DetailViewController.m 的顶部并添加了它。我尝试了强属性和弱属性。
【问题讨论】:
-
在
self.toolbar上调用setItems:animated:的行上设置断点。确认已到达断点,然后确保self.toolbar不是nil。 -
我向 [self.toolbar setItems:animated] 添加了断点,即使调用了该方法,它也没有调用该语句。 self.toolbar 为空。怎么是空的?我 cntrl-click 拖动到 DetailViewController.m 的顶部并使其成为强指针?
标签: ios storyboard uitoolbar