iOS開發(fā)之TabBar再次點擊實現(xiàn)刷新

需求

之前已經(jīng)實現(xiàn)了自定義TabBar,如圖所示:


自定義TabBar.jpeg

現(xiàn)在需要實現(xiàn)一個類似今日頭條TabBar的功能 —— 如果繼續(xù)點擊當前TabBar的選中項发绢,那么該界面需要刷新UITableView泛范。

分析

既然已經(jīng)自定義了TabBar,那么最簡單的就是在自定義中給TabBar中需要的UITabBarButton添加事件 —— 點擊就發(fā)送通知掂榔,并且將當前的索引傳出去黑竞。對應的界面監(jiān)聽通知眨层,拿到索引比對匣距,如果和當前索引一致,就執(zhí)行對應的操作哎壳。

實現(xiàn)

  1. 自定義TabBar的layoutSubviews中綁定事件
- (void)layoutSubviews
{
    
    [super layoutSubviews];
    for (UIButton * tabBarButton in self.subviews) {
            
        if ([tabBarButton isKindOfClass:NSClassFromString(@"UITabBarButton")]) {
            
            //監(jiān)聽tabbar的點擊
            //綁定tag 標識
            tabBarButton.tag = index;
            
            //監(jiān)聽tabbar的點擊
            [tabBarButton addTarget:self action:@selector(tabBarButtonClick:) forControlEvents:UIControlEventTouchUpInside];
            
        }
    }
}
  1. 監(jiān)聽事件毅待,發(fā)送通知
- (void)tabBarButtonClick:(UIControl *)tabBarBtn{
    
    //判斷當前按鈕是否為上一個按鈕
    //再次點擊同一個item時發(fā)送通知出去 對應的VC捕獲并判斷
    if (self.previousClickedTag == tabBarBtn.tag) {
        
        [[NSNotificationCenter defaultCenter] postNotificationName:
         @"DoubleClickTabbarItemNotification" object:@(tabBarBtn.tag)];
    }
    self.previousClickedTag = tabBarBtn.tag;
}
  1. 對應的UIViewController監(jiān)聽通知
- (void)viewDidLoad {
    [super viewDidLoad];
    
    [[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(doubleClickTab:) name:@"DoubleClickTabbarItemNotification" object:nil];
    
}
  1. 監(jiān)聽到通知,比對后執(zhí)行操作
-(void)doubleClickTab:(NSNotification *)notification{
    
    //這里有個坑 就是直接用NSInteger接收會有問題 數(shù)字不對
    //因為上個界面?zhèn)鬟^來的時候封裝成了對象归榕,所以用NSNumber接收后再取值
    NSNumber *index = notification.object;
    
    if ([index intValue] == 1) {
        //刷新
    }
    
}

2018.4.28 補充

本文被轉載后尸红,有很多好心的讀者進行批評指正:這種方式不夠優(yōu)雅,不夠簡單刹泄。怎么最簡單呢外里?其實只要重寫UITabBarController的代理就可以實現(xiàn),方法如下

//這個是UITabBarController的代理方法
- (BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController{
    
    // 判斷哪個界面要需要再次點擊刷新特石,這里以第一個VC為例
    if ([tabBarController.selectedViewController isEqual:[tabBarController.viewControllers firstObject]]) {
        // 判斷再次選中的是否為當前的控制器
        if ([viewController isEqual:tabBarController.selectedViewController]) {
            // 執(zhí)行操作
            NSLog(@"刷新界面");
         
            return NO;
        }
        
    }
    
    return YES;

}
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末盅蝗,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子姆蘸,更是在濱河造成了極大的恐慌墩莫,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,104評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件逞敷,死亡現(xiàn)場離奇詭異狂秦,居然都是意外死亡,警方通過查閱死者的電腦和手機推捐,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,816評論 3 399
  • 文/潘曉璐 我一進店門裂问,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事堪簿∪” “怎么了?”我有些...
    開封第一講書人閱讀 168,697評論 0 360
  • 文/不壞的土叔 我叫張陵戴甩,是天一觀的道長符喝。 經(jīng)常有香客問我,道長甜孤,這世上最難降的妖魔是什么协饲? 我笑而不...
    開封第一講書人閱讀 59,836評論 1 298
  • 正文 為了忘掉前任,我火速辦了婚禮缴川,結果婚禮上茉稠,老公的妹妹穿的比我還像新娘。我一直安慰自己把夸,他們只是感情好而线,可當我...
    茶點故事閱讀 68,851評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著恋日,像睡著了一般膀篮。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上岂膳,一...
    開封第一講書人閱讀 52,441評論 1 310
  • 那天誓竿,我揣著相機與錄音,去河邊找鬼谈截。 笑死筷屡,一個胖子當著我的面吹牛,可吹牛的內容都是我干的簸喂。 我是一名探鬼主播毙死,決...
    沈念sama閱讀 40,992評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼喻鳄!你這毒婦竟也來了扼倘?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 39,899評論 0 276
  • 序言:老撾萬榮一對情侶失蹤除呵,失蹤者是張志新(化名)和其女友劉穎唉锌,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體竿奏,經(jīng)...
    沈念sama閱讀 46,457評論 1 318
  • 正文 獨居荒郊野嶺守林人離奇死亡袄简,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 38,529評論 3 341
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了泛啸。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片绿语。...
    茶點故事閱讀 40,664評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出吕粹,到底是詐尸還是另有隱情种柑,我是刑警寧澤,帶...
    沈念sama閱讀 36,346評論 5 350
  • 正文 年R本政府宣布匹耕,位于F島的核電站聚请,受9級特大地震影響,放射性物質發(fā)生泄漏稳其。R本人自食惡果不足惜驶赏,卻給世界環(huán)境...
    茶點故事閱讀 42,025評論 3 334
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望既鞠。 院中可真熱鬧煤傍,春花似錦、人聲如沸嘱蛋。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,511評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽洒敏。三九已至龄恋,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間凶伙,已是汗流浹背郭毕。 一陣腳步聲響...
    開封第一講書人閱讀 33,611評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留镊靴,地道東北人铣卡。 一個月前我還...
    沈念sama閱讀 49,081評論 3 377
  • 正文 我出身青樓链韭,卻偏偏與公主長得像偏竟,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子敞峭,可洞房花燭夜當晚...
    茶點故事閱讀 45,675評論 2 359

推薦閱讀更多精彩內容

  • 點擊查看原文 Web SDK 開發(fā)手冊 SDK 概述 網(wǎng)易云信 SDK 為 Web 應用提供一個完善的 IM 系統(tǒng)...
    layjoy閱讀 13,786評論 0 15
  • 理性讓人很痛苦,這個必須做沉迹,那個不能做睦疫,在條條框框的約束里,感受不到半點樂趣… 感性跳出來鞭呕,勸說我們人生苦短蛤育,要及...
    哇哇來啦閱讀 343評論 0 1
  • 世上有種真正的奢侈 就是在自己每天重復的習慣里 一直地遇見美好 生活最好的狀態(tài)是 冷冷清清的風風火火
    靜待花開jl閱讀 141評論 0 2
  • 當我想到高原,最擔心的還是高原反應。因為在高原上空氣稀薄瓦糕,人們的運動很消費體力底洗,在高原上行走一步,相當于在地面上走...
    何婉儀閱讀 2,618評論 41 72
  • 我的情 如風 來去無影 我的情 如雨 偶爾光臨 我的情 如云 琢磨不定 我的情 給你 柔情蜜意 我的情 收回 萬箭...
    鍾九思閱讀 597評論 0 50