1

我希望在用户单击按钮时以编程方式将 UIToolbar 添加到视图中(在我的情况下,当他们放大照片时)。

当我在 click 方法中创建工具栏并添加到子视图时,它似乎工作正常,但是如果我在 viewDidLoad 方法中创建工具栏,将其分配给实例变量,然后在单击时将该实例变量添加到子视图,什么也没有出现。调试器显示实例变量是一个 UIToolbar 并且不为空。我不想在每次单击时都创建和销毁相同的工具栏,所以我认为最好将其保留为我根据需要从视图中添加和删除的实例变量。这是正确的方法吗?

为什么它在一种情况下可见,而在另一种情况下不可见。

设置

@synthesize toolBar;

- (UIToolbar*)createToolbar
{
    UIToolbar* toolbar = [[UIToolbar alloc] init];
    toolbar.frame = CGRectMake(0, self.view.frame.size.height - 44, self.view.frame.size.width, 44); 
    UIBarButtonItem *shareButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAction target:self action:@selector(sharePhoto:)];
    NSArray *buttonItems = [NSArray arrayWithObjects:shareButton,nil];
    [toolbar setItems:buttonItems];
    return toolbar;

}

这有效

- (void) clickMyButton {

    toolBar = [self createToolbar];
    [self.view addSubview:toolBar];
}

这不显示任何东西

- (void)viewDidLoad
{
    [super viewDidLoad];
 toolBar = [self createToolbar];

}
- (void) clickMyButton {

    [self.view addSubview:toolBar];
}

为什么在后一种情况下不起作用

4

1 回答 1

2

问题是,当viewDidLoad被调用时,不能保证您的视图和子视图的框架已设置。尝试[self createToolbar]viewWillAppearviewDidAppear代替。

于 2013-03-17T21:05:16.277 回答