关于如何实现双击某一个tabBarItem,自动进行下拉刷新的问题。

         关于如何实现双击某一个tabBarItem,自动进行下拉刷新的问题,自己在今天开发项目的过程中遇到了这么一个问题,就是不仅仅通过向下拉来实现下拉刷新,也可以通过双击那个tabBarItem达到目的。自己在网上百度了一下,发现网上没有之类的问题,可能是问题太过于简单,所以大神们都没有屑于贴出来。所以我就自己动手解决了这么一个问题。

        首先,我的tabBar总共控制着4个主viewController,我的MainViewController是继承于tabBarController的,所以我在.h文件中实现了UITabBarDelegate,然后在.m文件中实现delegate方法,实现的代码如下:

#pragma mark - UITabBar delegate 实现双击tabBar刷新
- (void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item
{
    
    if (self.selectedIndex == 1 && self.selectedIndex == item.tag ) {
        UINavigationController *nav = self.viewControllers[1];
        StudentViewController *studentViewCtrl = nav.viewControllers[0];
        [studentViewCtrl refreshUI];
    }
    
    self.selectedIndex = item.tag;
}

    -----------------------------------下面都是对上述代码的相关解释----------------------------------------  

1、item的tag是之前就设置好的,在4个主的viewController里面,我将每一个的ctrl设置了tag值,然后放入array中,才传入了继承于tabBarController的MainViewController中的。代码如下:

- (void)_initViewCtrls
{
    HomeViewController *homeViewCtrl = [[HomeViewController alloc] init];
    UITabBarItem *homeItem = [[UITabBarItem alloc] initWithTitle:@"首页" image:[UIImage imageNamed:@"tabbar_home.png"] tag:0];
    homeViewCtrl.tabBarItem = homeItem;
    
    StudentViewController *stuViewCtrl = [[StudentViewController alloc] init];
    UITabBarItem *stuItem = [[UITabBarItem alloc] initWithTitle:@"校内新闻" image:[UIImage imageNamed:@"tabbar_message_center.png"] tag:1];
    stuViewCtrl.tabBarItem = stuItem;
    
    MeViewController *meViewCtrl = [[MeViewController alloc] init];
    UITabBarItem *meItem = [[UITabBarItem alloc] initWithTitle:@"我的" image:[UIImage imageNamed:@"tabbar_profile.png"] tag:2];
    meViewCtrl.tabBarItem = meItem;
    
    MoreViewController *moreViewCtrl = [[MoreViewController alloc] init];
    UITabBarItem *moreItem = [[UITabBarItem alloc] initWithTitle:@"更多" image:[UIImage imageNamed:@"tabbar_more.png"] tag:3];
    moreViewCtrl.tabBarItem = moreItem;
    
    NSArray *viewCtrlArray = [NSArray arrayWithObjects:homeViewCtrl,stuViewCtrl,meViewCtrl,moreViewCtrl, nil];
    
    NSMutableArray *array = [NSMutableArray arrayWithCapacity:4];
    for (UIViewController *viewCtrl in viewCtrlArray) {
        BaseNaviViewController *baseNav = [[BaseNaviViewController alloc] initWithRootViewController:viewCtrl];
        baseNav.delegate = self;
        [array addObject:baseNav];
        [baseNav release];
    }
    
    self.viewControllers = array;
    
    [homeViewCtrl release];
    [stuViewCtrl release];
    [meViewCtrl release];
    [moreViewCtrl release];
    [homeItem release];
    [stuItem release];
    [meItem release];
    [moreItem release];
}


      2、[studentViewCtrl refreshUI]是我在StudentViewController中对外公布的一个方法,这样就可以实现MainViewController和StudentViewController的一个通信,让数据请求的都在StudentViewController中完成。具体的方法如下代码:

#pragma mark - data
// 自动下拉刷新,该方法提供给MainViewCtrl
- (void)refreshUI
{
    [self.tableView headerBeginRefreshing];
    [self loadData];
}

    3、再啰嗦两句,我的下拉刷新控件用的是MJRefresh,这个控件在code4App上面有,非常的好用,耦合度非常低,达到了“随需随插”的境界。


转载于:https://my.oschina.net/u/1982653/blog/299320

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值