即使在实现 PushView 控制器之后,如何使导航栏和标签栏在每个屏幕上始终可见

How to make Navigation Bar and Tab bar always visible on every screen even after implementing PushView controller

我有一个 iPhone 应用程序,其中需要在导航栏上添加 UISearchbar,以便用户可以从应用程序内的任何位置进行搜索。当用户搜索时,它会在 Tableview 控制器中显示搜索结果,用户可以 select 推送到其他控制器的任何行。

下面是我在 StoryBoard 中的结构

我可以在 ViewController 1

的 Navigationbar 上成功添加 UIsearchbar
 UIImageView *imageView = [[UIImageView alloc] initWithImage:[UIImage      imageNamed:SEARCH]];
imageView.frame = CGRectMake(0, 0, 20, 20);

UITapGestureRecognizer *tapGesture =
[[UITapGestureRecognizer alloc] initWithTarget:self
                                        action:@selector(searchTapped:)];
[imageView addGestureRecognizer:tapGesture];

self.searchButton = [[UIBarButtonItem alloc] initWithCustomView:imageView];
self.searchButton.style = UIBarButtonItemStylePlain;
 self.searchButton.target = self;
 [self.searchButton setTintColor:[UIColor whiteColor]];
self.tabBarController.navigationItem.rightBarButtonItem = self.searchButton;

我也可以在 Tableview 控制器中成功实现搜索结果,但是当用户 select 行时,它会推送到不同的控制器。下面是实现推送到不同控制器的代码。

 UIStoryboard *mainStoryboard = [UIStoryboard storyboardWithName:@"Main"  bundle: nil];
    EntityViewController *entityController = [mainStoryboard  instantiateViewControllerWithIdentifier:ENTITYIDENTIFIER];
    entityController.dataDic = result;
     [self.navigationController pushViewController:entityController  animated:YES];

这里的问题是当它推送到不同的控制器时,TabBar 被完全隐藏,Navigation bar 右键被完全隐藏。

我尝试取消隐藏标签栏和导航栏但没有效果。我尝试了所有可能性,但没有任何效果。

有人可以告诉我解决这个问题的正确方法是什么吗?

提前致谢。

您是否尝试过调换 UINavigationController 和 UITabController 的顺序?

现在,您似乎有一个带有 UITabController 的 UINavigationController "inside"。因此,当您将其他内容推送到 UINavigationController 时,UITabController 将被推到一边,因为它不再相关。

如果您要将 UITabController 置于最顶层,将 UINavigationController 置于每个选项卡(或仅在相关选项卡),当您将另一个视图控制器推送到该 UINavigationController 时,它不会'不会影响标签栏,因为它仍将位于最顶层,完全不受推送影响。

希望对您有所帮助。祝你好运!

感谢您的帮助。我通过将 Tab Bar 控制器作为每个视图的 TOP View 和 Navigation 控制器解决了这个问题(根据要求。我单独制作了 SearchController,以便用户可以从应用程序内的任何位置进行搜索。

我更新了这个,因为它可以帮助那些需要实现类似要求的人。

如果有更好的实现方法,请提出您的意见。

谢谢