【问题标题】:ios:click on navigation button overlaps views on tabbar viewios:单击导航按钮与标签栏视图上的视图重叠
【发布时间】:2015-03-27 05:32:12
【问题描述】:

我的应用程序有点简单但是作为 iOS 的新手,我无法检测到实际问题出在哪里。iam 有一个有四个按钮的标签栏控制器,并且对于每个按钮,我都采用了一个导航控制器,并且我为它附加了一个视图控制器全部。问题是当我单击导航栏按钮项目时。视图出现在选项卡视图的顶部。当我单击选项卡按钮 B 并返回选项卡按钮时,当我单击导航按钮时出现相同的视图,但是不是标签的实际视图。在标签栏委托中我给出了这样的

-(void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item

 {

[self.navigationController popToRootViewControllerAnimated:YES];
}

但我仍然面临同样的问题。如果可能,请提供解决方案并提供示例代码

【问题讨论】:

  • 您想在标签项点击时显示每个标签的根 VC?
  • 是的,但为此我现在双击标签栏按钮。但应该只单击一次以获得根视图
  • 这是一个非常奇怪的要求。如果您打算从此视图导航到详细屏幕怎么办?如果您在每个选项卡切换时都显示第一个屏幕,那将是非常糟糕的用户体验。或者,如果您只是想显示五个视图,那么最好不要使用标签栏控制器。使用一些自定义控件或尝试使用按钮创建一个简单的视图。

标签: ios objective-c uinavigationcontroller uitabbarcontroller uitabbar


【解决方案1】:

试试这个,

添加didSelectViewController Tabbar 的委托方法并添加代码以弹出到根视图控制器,如下所示

- (void)tabBarController:(UITabBarController *)tabBarController
 didSelectViewController:(UIViewController *)viewController {

    [viewController.navigationController popToRootViewControllerAnimated:YES];
}

【讨论】:

  • 我的情况只有在委托上面调用,即 -(void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item。你给出的上述方法没有达到断点
  • 您是否对UITabBarController 进行了子类化?将委托设置为UITabBarController。而 `didSelectItem:` 是来自UITabBar 的方法,它已经由标签栏控制器处理。尝试将委托设置为 tabbarcontroller 而不是 uitabbar
  • 我已将 UITabbarcontroller 和 ser self.tabbarcontroller.delegate 的 suclass 设置为 self ,但仍然无法正常工作
  • 然后在-(void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item 方法中尝试[self. selectedViewController.navigationController popToRootViewControllerAnimated:YES];
  • 试过了,我打印了自己。控制台中的 selectedViewController.navigationController 显示为零
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多