iOS開發(fā)中TabBar再次點(diǎn)擊實(shí)現(xiàn)刷新效果
需求
之前已經(jīng)實(shí)現(xiàn)了自定義TabBar,如圖所示:
自定義TabBar.jpeg
現(xiàn)在需要實(shí)現(xiàn)一個(gè)類似今日頭條TabBar的功能 —— 如果繼續(xù)點(diǎn)擊當(dāng)前TabBar的選中項(xiàng),那么該界面需要刷新UITableView。
分析
既然已經(jīng)自定義了TabBar,那么最簡(jiǎn)單的就是在自定義中給TabBar中需要的UITabBarButton添加事件 —— 點(diǎn)擊就發(fā)送通知,并且將當(dāng)前的索引傳出去。對(duì)應(yīng)的界面監(jiān)聽通知,拿到索引比對(duì),如果和當(dāng)前索引一致,就執(zhí)行對(duì)應(yīng)的操作。
實(shí)現(xiàn)
1. 自定義TabBar的layoutSubviews中綁定事件
- (void)layoutSubviews { [super layoutSubviews]; for (UIButton * tabBarButton in self.subviews) { if ([tabBarButton isKindOfClass:NSClassFromString(@"UITabBarButton")]) { //監(jiān)聽tabbar的點(diǎn)擊 //綁定tag 標(biāo)識(shí) tabBarButton.tag = index; //監(jiān)聽tabbar的點(diǎn)擊 [tabBarButton addTarget:self action:@selector(tabBarButtonClick:) forControlEvents:UIControlEventTouchUpInside]; } } }
2. 監(jiān)聽事件,發(fā)送通知
- (void)tabBarButtonClick:(UIControl *)tabBarBtn{ //判斷當(dāng)前按鈕是否為上一個(gè)按鈕 //再次點(diǎn)擊同一個(gè)item時(shí)發(fā)送通知出去 對(duì)應(yīng)的VC捕獲并判斷 if (self.previousClickedTag == tabBarBtn.tag) { [[NSNotificationCenter defaultCenter] postNotificationName: @"DoubleClickTabbarItemNotification" object:@(tabBarBtn.tag)]; } self.previousClickedTag = tabBarBtn.tag; }
對(duì)應(yīng)的UIViewController監(jiān)聽通知
- (void)viewDidLoad { [super viewDidLoad]; [[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(doubleClickTab:) name:@"DoubleClickTabbarItemNotification" object:nil]; }
3. 監(jiān)聽到通知,比對(duì)后執(zhí)行操作
-(void)doubleClickTab:(NSNotification *)notification{ //這里有個(gè)坑 就是直接用NSInteger接收會(huì)有問題 數(shù)字不對(duì) //因?yàn)樯蟼€(gè)界面?zhèn)鬟^來的時(shí)候封裝成了對(duì)象,所以用NSNumber接收后再取值 NSNumber *index = notification.object; if ([index intValue] == 1) { //刷新 } }
最終的效果請(qǐng)看:
總結(jié)
以上所述是小編給大家介紹的iOS開發(fā)中TabBar再次點(diǎn)擊實(shí)現(xiàn)刷新效果,希望對(duì)大家有所幫助,如果大家有任何疑問請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
相關(guān)文章
iOS之UIWebView無法獲取web標(biāo)題的解決方法
這篇文章主要為大家詳細(xì)介紹了iOS之UIWebView無法獲取web標(biāo)題的解決方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-07-07IOS中(assign,retain,copy,weak,strong)的區(qū)別以及nonatomic的含義
這篇文章主要介紹了我們?cè)诼暶鰼property 屬性時(shí),總是要在括號(hào)中寫上assign、retain、copy、weak、strong中的一個(gè),他們的區(qū)別,需要的朋友可以參考下2017-03-03iOS動(dòng)畫教你編寫Slack的Loading動(dòng)畫進(jìn)階篇
這篇文章主要為大家進(jìn)一步詳細(xì)介紹了iOS動(dòng)畫教你編寫Slack的Loading動(dòng)畫,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-09-09深入解析iOS應(yīng)用開發(fā)中對(duì)設(shè)計(jì)模式中的橋接模式的使用
這篇文章主要介紹了iOS應(yīng)用開發(fā)中對(duì)設(shè)計(jì)模式中的橋接模式的使用,bridge橋接模式中主張把抽象部分與實(shí)現(xiàn)部分分離,需要的朋友可以參考下2016-03-03iOS開發(fā)之tableView實(shí)現(xiàn)左滑刪除功能
我們?cè)谑褂靡恍?yīng)用的時(shí)候,在滑動(dòng)一些聯(lián)系人的某一行的時(shí)候,會(huì)出現(xiàn)刪除、置頂、更多等等的按鈕,下面這篇文章主要就介紹了iOS用tableView實(shí)現(xiàn)左劃刪除功能的方法,有需要的朋友們可以參考借鑒,下面來一起看看吧。2017-01-01