2016-01-04 1 views
-1

J'ai un contrôleur de vue (FirstViewController) qui appuie sur un autre contrôleur de vue (SecondViewController) qui contient un contrôleur de recherche. La barre de recherche dans SecondViewController est un IBOutlet dans le fichier xib. Maintenant, lorsque l'utilisateur appuie sur la barre de recherche, il couvre également la barre de navigation, qui est le comportement prévu. Maintenant, j'ajoute SecondViewController en tant que contrôleur de vue enfant à ThirdViewController, et ThirdViewController est poussé par FirstViewController. Maintenant, lorsque la barre de recherche est tapée, elle ne couvre pas la barre de navigation. Il apparaît juste en dessous de la barre de navigation. Le code pour ajouter le contrôleur de vue des enfants est simple (en ThirdViewController):La barre de recherche ne couvre pas la barre de navigation iOS

self.childViewController.view.frame = self.view.bounds; 
    [self.view addSubview:self.childViewController.view]; 
    [self addChildViewController:self.childViewController]; 

En FirstViewController:

[self.navigationController pushViewController:self.thirdViewController 
               animated:YES]; 

où le thirdViewController est une propriété FirstViewController.

J'ai 2 questions: 1. Que peut-on faire pour rectifier le comportement mentionné ci-dessus? 2. Une animation est en jeu lorsque la barre de recherche est appuyée. Que faire si je veux que la barre de recherche reste telle quelle sur écoute? c'est-à-dire, dans ce cas, il ne couvrira pas la barre de navigation.

Répondre

0

Essayez ceci dans secondViewcontroller

- (void)viewDidLayoutSubviews 
{ 

[super viewDidLayoutSubviews]; 
CGRect rect = self.navigationController.navigationBar.frame; 

float y = rect.origin.y-20; 
searchBar.contentInset = UIEdgeInsetsMake(y ,0,0,0); 
}