我希望在用户点击按钮时以编程方式将UIToolbar添加到视图中(在我放大照片的情况下)。
当我在click方法中创建工具栏并添加到子视图但是如果我在viewDidLoad方法中创建工具栏时,它似乎工作正常,将其分配给实例变量,并稍后将该实例变量添加到子视图点击,什么也没出现。调试器显示实例变量是UIToolbar而不是null。我不想在每次点击时创建和销毁相同的工具栏,所以我认为最好只保留它作为我根据需要添加和删除视图的实例变量。这是正确的做法吗?
为什么在一个案例中可见而不是另一个案例。
设置
@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];
}
为什么它不适用于后一种情况
答案 0 :(得分:2)
问题是,当viewDidLoad
被调用时,无法保证您的视图和子视图的帧都已设置。请尝试从[self createToolbar]
或viewWillAppear
拨打viewDidAppear
。