好的,这就是交易。我有5个标签,其中3个只是链接。因此,当用户点击它们时,它实际上会使用以下内容将它们带到网站:
- (void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item{...}
因此标签栏项目几乎可以用作按钮。
链接工作正常,但问题是我不想在点击上加载视图。所以最初我为[UIViewController alloc]
添加了一些self.viewController
(在标签栏控制器中)。那些视图控制器是空白的,但它们允许我添加如下图标:
UIViewController *vc = [UIViewController alloc];
[vc1.tabBarItem setImage:[[UIImage imageNamed:@"tab-fb"] imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate]];
vc1.title=@"Facebook";
所有这些都可以,但是当用户点击它时,会出现一个空白的黑色视图。我明白这是正常的,但我怎么摆脱它呢?我希望用户能够保持当前视图,但需要转到该链接。
我尝试过这样的事情:
- (void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item{
selectedIndex=[[tabBar items] indexOfObject:item];
if(selectedIndex == 1){
[self setSelectedIndex:0]; //RIGHT HERE
//...code to go to link...
}
}
但由于某种原因,该程序不响应[self setSelectedIndex:0];
任何提示?
答案 0 :(得分:0)
这在我的标签栏中对我不起作用。
但是,这种方法可能适合您。在你的app委托中,didFinishLaunchingWithOptions:
MyTabBarController.delegate = self;
然后在您的app delegate中实现此委托方法:
-(BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController
在方法中,您可以像这样检查VC:
if ([tabBarController.viewControllers indexOfObject:viewController] == indexOfTabToBlock) return false;
这有效地阻止了切换到该选项卡。
您必须找到一些方法将此点击传达给您希望让用户保持开启的主视图控制器,以便它可以根据需要处理链接。例如,您可以使用通知。