为什么在viewDidLoad中添加子视图不起作用

时间:2014-05-17 11:04:08

标签: ios objective-c uiwebview viewdidload viewwillappear

我试图将UIToolBar添加到UIWebView中,但每当我在viewDidLoad中插入此代码时UIToolBar都不会显示,但是当在viewWillAppear中完成时,它可以正常工作。有人可以向我解释一下。

-(void)viewDidLoad
{
[super viewDidLoad];
self.forwardButton = [[UIBarButtonItem alloc]initWithTitle:@"Forward"          style:UIBarButtonItemStylePlain target:self action:@selector(forward)];
self.backButton = [[UIBarButtonItem alloc]initWithTitle:@"Back" style:UIBarButtonItemStylePlain target:self action:@selector(back)];
NSArray *buttonsArray = @[self.backButton,self.forwardButton];
CGRect toolBarFrame = CGRectMake(0, self.view.frame.size.height - 44, self.view.frame.size.width, 44);
self.toolbar = [[UIToolbar alloc]initWithFrame:toolBarFrame];
[self.toolbar setItems:buttonsArray animated:YES];
[self.toolbar sizeToFit];
[self.view addSubview:self.toolbar];
}

1 个答案:

答案 0 :(得分:5)

viewDidLoad中添加子视图,但在frame中设置其viewWillAppear。正好在UIKit调用self.view.frame之前设置viewWillAppear。您在viewDidLoad中获得的值是在nib中设置的值,通常与实际的frame不同。

不要忘记设置autoresizingMask或使用自动布局。