2016-12-12 5 views
6

私が作成したtableViewサイドバーの中にUISearchBar(& UISearchDisplayController)があります(写真参照)。私のUINavigationBarのボタンをタップすると表示されます。私のMap View Controllerの中には、ナビゲーションバーにUISegmentControlがあり、ユーザーはビュー間で切り替えることができます(mapView & friendsMapView)。何らかの理由でUISegmentControlでビューを切り替えるときにUISearchBarが消える

enter image description here

、UISearchBarは、それが最初に開いたときにサイドバーにうまく表示されます。しかし、私がfriendsMapViewに切り替えるためにセグメントコントロールをタップし、mapViewに戻ると、私のUISearchBarはなくなりました(写真参照)。

enter image description here

すべてのアイデア、なぜこれがだろうか? StoryBoardで上記を実装しました。 (このことができますかどうかわからない)以下segmentControlコードを参照してください:

.M

-(IBAction)segmentControl:(id)sender { 
    UIStoryboard *storyBoard = [UIStoryboard storyboardWithName:@"Main" bundle:nil]; 
    UITableViewController *menuController; 

    menuController = [storyBoard instantiateViewControllerWithIdentifier:@"neighbourMenu"]; 
    self.title = @"Controller 1"; 

    switch (self.segmentControl.selectedSegmentIndex) 
    { 

     case 0: 

      [mapView setHidden:NO]; 
      [friendsMapView setHidden:YES]; 


      menuController = [storyBoard instantiateViewControllerWithIdentifier:@"neighbourMenu"]; 


      break; 



     case 1: //FRIENDS MAP VIEW 


      menuController = [storyBoard instantiateViewControllerWithIdentifier:@"FriendMenu"]; 
      // self.title = @"Item 1"; 

      [mapView setHidden:YES]; 
      [friendsMapView setHidden:NO]; 


      //FRIENDS MAPVIEW LOCATION/ZOOM 

      friendsMapView.delegate = self; 
      self.locationManager = [[CLLocationManager alloc] init]; 
      self.locationManager.delegate = self; 



#ifdef __IPHONE_8_0 
      if(IS_OS_8_OR_LATER) { 



       [self.locationManager requestWhenInUseAuthorization]; 
       //  [self.locationManager requestAlwaysAuthorization]; 
      } 
#endif 
      [self.locationManager startUpdatingLocation]; 


      friendsMapView.showsUserLocation = YES; 
      [friendsMapView setMapType:MKMapTypeStandard]; 
      [friendsMapView setZoomEnabled:YES]; 
      [friendsMapView setScrollEnabled:YES]; 

      break; 



     case 2: 

      [mapView setHidden:YES]; 
      [friendsMapView setHidden:YES]; 

      break; 


    } 

    UINavigationController *nc = [[UINavigationController alloc] initWithRootViewController:menuController]; 
    [self.revealViewController setRearViewController:nc]; 



} 
+0

「segmentedControl」オプションの選択に基づいて 'mapView'と' friendsMapView'を表示/非表示にしたいと思うかもしれません。私はなぜあなたがオプションフォーム 'segmentedControl'を選択するたびに' revealViewController'の 'rearViewController'を変更しているのか分かりません。 – Adeel

+0

@Adeel friendsMapViewが表示されているときに別のメニューがサイドバーに表示されるため(mapViewが表示されているときに1つのメニューが表示され、friendsMapViewが表示されているときに別のメニューが表示されます)。 – Brittany

+0

あなたが提供した情報は十分ではありません、私は恐れています。リアビューコントローラとして設定しているビューコントローラを共有してください。デバッグをしましたか?問題に関するあなたの調査結果は何ですか? – Adeel

答えて

2

を私はあなたの現在のViewControllerを知らないが、あなたが以下の新しいnavigationcontrollerを設定して、現在のViewControllerのされているようですナビゲーションバーには検索バーがありますが、新しいナビゲーションコントローラには表示されません。

UINavigationController *nc = [[UINavigationController alloc] initWithRootViewController:menuController]; 
[self.revealViewController setRearViewController:nc]; 
+0

あなたは100%正しいです。私がそれらの行をコメントアウトすると、検索はうまく動作するからです。だから私は単に同様に他のテーブルビュー内の検索を配置する必要がありますか? – Brittany

+1

これは方法ですが、コンテナviewcontrollerがあり、このコントローラー内のビューコントローラーを変更していることがわかります。したがって、主レイアウトを変更したい場合は、viewcontrollerのビューをコンテナビューに追加してください。検索バーで現在のナビゲーションバーを保存します。 revealViewcontrollerの中では '[self.view addSubview:CHANGED_VIEWCONTROLLER.view]; ' – abdullahselek

+0

@Brittanyを使用して回答を受け入れることができますか? – abdullahselek

関連する問題