ios在选择uitabbarcontroller项目时检索

Posted

技术标签:

【中文标题】ios在选择uitabbarcontroller项目时检索【英文标题】:ios retrieve when uitabbarcontroller item is selected 【发布时间】:2011-09-19 22:02:20 【问题描述】:

当用户单击 tabbaritem 进入 uitabbarcontroller 以更改某些内容时,我需要检索.. 这是我的代码:

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

    if (item == [tabBarController.tabBar.items objectAtIndex:2]) 
        item.title = @"add shot";
    
    else
    
        item.title = @"Race";
    

但如果我这样做:

self.tabBarController.tabBar.delegate = self;

我收到了一个信号...

什么是正确的解决方案?提前致谢

【问题讨论】:

【参考方案1】:

您的视图控制器是否符合 UITabBarDelegate 协议? 在头文件中:

@interface MyViewController : UIViewController<UITabBarDelegate> 
    // ...


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

@end

然后,做:

tabBar.delegate = self;

代替:

self.tabBarController.tabBar.delegate = self;

还有:

- (void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item 
    //self.tabBarItem.title = @"Title";

【讨论】:

with tabBarController.delegate 没有给我 sigkill,但 didSelectItem 方法属于 UITabBarDelegate,而不是 UITabBarControllerDelegate 更新答案,试试看。【参考方案2】:

我在学习 ios 开发时遇到了这个答案,但我想为像我这样的 n00bs 包括一些缺失的部分。

// HelloWorldViewController.h
@interface HelloWorldViewController : UIViewController <UITabBarDelegate>
   

@property (weak, nonatomic) IBOutlet UITabBar *tabBar;    
@end

// HelloWorldViewController.m
@interface HelloWorldViewController ()

@end

@implementation HelloWorldViewController 
@synthesize tabBar;
- (void) viewDidLoad
 
   tabBar.delegate = self;


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

      NSLog(@"didSelectItem: %d", item.tag);


@end

【讨论】:

太棒了!你让我今天一整天都感觉很好!非常适合我的一段代码!

以上是关于ios在选择uitabbarcontroller项目时检索的主要内容,如果未能解决你的问题,请参考以下文章

在 iOS7 UITabbarController 中,如何在点击已选择的 tabBarItem 时停止将 navigationController 重置为 root?

iOS 7 - 呈现模式视图控制器选择 UITabBarController 中的第一个选项卡

iOS基础之UITabBarController(标签视图控制器)

如何在用户选择时在 uitabbarcontroller 内的 uinavigationcontroller 中每次都初始化 viewcontroller

UITabBarController 选中项

UITabBarController 中的 UINavigationController 在 iOS 6 中不会旋转