我有一个视图控制器(FirstViewController),它推送另一个包含搜索控制器的视图控制器(SecondViewController)。 SecondViewController中的搜索栏是xib文件中的IBOutlet。现在,当用户点击搜索栏时,它也会覆盖导航栏,这是预期的行为。现在我将SecondViewController作为子视图控制器添加到ThirdViewController,而ThirdViewController则由FirstViewController推送。现在,当点击搜索栏时,它不会覆盖导航栏。它只显示在导航栏下方。 添加子视图控制器的代码是直接的(在ThirdViewController中):
self.childViewController.view.frame = self.view.bounds;
[self.view addSubview:self.childViewController.view];
[self addChildViewController:self.childViewController];
在FirstViewController中:
[self.navigationController pushViewController:self.thirdViewController
animated:YES];
其中thirdViewController是FirstViewController中的属性。
我有两个问题: 1.如何纠正上述行为? 2.点击搜索栏时会涉及一些动画。如果我希望搜索栏保持在点击状态,该怎么办?即,在这种情况下,它不会覆盖导航栏。
答案 0 :(得分:0)
在secondViewcontroller中尝试此操作
- (void)viewDidLayoutSubviews
{
[super viewDidLayoutSubviews];
CGRect rect = self.navigationController.navigationBar.frame;
float y = rect.origin.y-20;
searchBar.contentInset = UIEdgeInsetsMake(y ,0,0,0);
}