【iOS開發(fā)筆記】TabBarItem的選中事件

紀(jì)錄和總結(jié)還真是一件難事瘾晃,一方面也是查閱了各種資料然后解決了的問題爆安,就會覺得既然有資料能解決醒串,那我還要總結(jié)和紀(jì)錄么烦却?另一方面雖然說是日記卻并不能保證時效性宠叼,寫的時候也只是重新回憶。
不過蛋蛋說其爵,想起什么寫什么冒冬,多寫寫心得什么的,以后說不定還能裝逼......
嗯摩渺,那今天就寫一寫開發(fā)時遇到的一個小問題简烤,因為整體用到的幾個大模塊,所以用了TabBarController來做切換摇幻,而設(shè)計師給我其中某個模塊的設(shè)計圖時横侦,做了幾個要求挥萌。

1.這個模塊的Item沒有選中的情況下點擊時,跳轉(zhuǎn)到對應(yīng)模塊的主頁面枉侧。
2.這個模塊的Item選中的狀態(tài)下點擊時引瀑,進(jìn)行一個頁面跳轉(zhuǎn)。
3.這個模塊的主頁面有一個按鈕榨馁,點擊時憨栽,下面的Item的圖片改變,再點擊時辆影,進(jìn)行另一個頁面跳轉(zhuǎn)徒像。

因為沒有思路,所以我撓了五分鐘頭后蛙讥,去跟設(shè)計師打了一架......
好吧锯蛀,這個是開玩笑的,我過去跟設(shè)計師進(jìn)行了友好的交流后次慢,設(shè)計師說可以給我單獨再設(shè)計一個頁面旁涤。
后來我在等待設(shè)計師出圖時,撓頭了兩分鐘迫像,覺得作為一個理科男劈愚,本著科學(xué)精神,不應(yīng)該在問題面前妥協(xié)闻妓,應(yīng)該想辦法解決問題菌羽,所以果斷開始百度谷歌,終于在設(shè)計師出圖之前由缆,解決了這個問題注祖,然后告訴他:

嗯,這圖我不要了均唉。什么是晨?剛做好?哎呀這么丑舔箭,不要了不要了罩缴,我這么機智聰明,問題早解決了层扶。

嗯箫章,開始解決問題。

1.寫一個繼承自UITabBarController的子類怒医。
2.做兩個屬性炉抒。

//紀(jì)錄上次的item
@property (nonatomic,strong) UITabBarItem *lastItem;
//是否要跳頁的狀態(tài),默認(rèn)值給NO
@property (nonatomic,assign) CGFloat itemState;

3.遵守UITabBarControllerDelegate協(xié)議稚叹,然后把自己設(shè)置為自己的代理

self.delegate = self;

4.實現(xiàn)代理中的方法焰薄,如果本次選中和上次選中的Item是一樣的拿诸,就發(fā)一個通知,這個通知只有要跳轉(zhuǎn)頁面的那個Item對應(yīng)的頁面注冊塞茅,所以只有它會進(jìn)入這個通知的方法亩码。

-(void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item{
    // 判斷本次點擊的UITabBarItem是否和上次的一樣
    if (item == self.lastItem) { // 一樣就發(fā)出通知
        self.itemState = YES;
        [[NSNotificationCenter defaultCenter] postNotificationName:@"ItemDidClickNotification" object:nil userInfo:nil];
    }else{
        self.itemState = NO;
    }
    // 將這次點擊的UITabBarItem賦值給屬性
    self.lastItem = item;
}

5.再實現(xiàn)一個代理中的方法,因為本來點擊Item時野瘦,TabBarController是要切換頁面的描沟,我們來實現(xiàn)代理方法,當(dāng)要跳轉(zhuǎn)頁面時鞭光,就補讓它再切換頁面了吏廉,不然你跳轉(zhuǎn)了之后,會瞬間給你切換回來惰许。

- (BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController {
    //是第三個根視圖且本次點擊跟上次一樣席覆,就不切換
    if (viewController == self.viewControllers[2] && self.itemState) {
        //點擊中間tabbarItem,不切換汹买,讓當(dāng)前頁面跳轉(zhuǎn)
        return NO;
    }
    return YES;
}

6.在第四步中說的那個要跳轉(zhuǎn)的頁面注冊通知佩伤。

//注冊通知
    [[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(itemAction:) name:@"ItemDidClickNotification" object:nil];

7.實現(xiàn)上一步的通知方法

#pragma mark - 通知的方法
-(void)itemAction:(NSNotification *)notification{
    UIWindow *keyWindow = [UIApplication sharedApplication].keyWindow;
    // 判斷這個控件是否在主窗口上(即該控件和keyWindow有沒有交叉)
    BOOL isOnWindow = CGRectIntersectsRect(self.view.frame, keyWindow.bounds);
    // 再判斷這個控件是否真正顯示在窗口范圍內(nèi)(是否在窗口上,是否為隱藏晦毙,是否透明)
    BOOL isShowingOnWindow = (self.view.window == keyWindow) && !self.view.isHidden && (self.view.alpha > 0.01) && isOnWindow;
    if (isShowingOnWindow) {
        if ([self.selectStr isEqualToString:@"一"]) {
            //第一種頁面跳轉(zhuǎn)
            OneViewController *oneVC = [[OneViewController alloc]init];
            [self.navigationController pushViewController:oneVC animated:YES];
        }else{
            //第二種頁面跳轉(zhuǎn)
            TwoViewController *twoVC = [[TwoViewController alloc]init];
            [self.navigationController pushViewController:twoVC animated:YES];
        }
    }
}

撓頭解除生巡。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市见妒,隨后出現(xiàn)的幾起案子孤荣,更是在濱河造成了極大的恐慌,老刑警劉巖须揣,帶你破解...
    沈念sama閱讀 218,546評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件垃环,死亡現(xiàn)場離奇詭異,居然都是意外死亡返敬,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,224評論 3 395
  • 文/潘曉璐 我一進(jìn)店門寥院,熙熙樓的掌柜王于貴愁眉苦臉地迎上來劲赠,“玉大人,你說我怎么就攤上這事秸谢×菖欤” “怎么了?”我有些...
    開封第一講書人閱讀 164,911評論 0 354
  • 文/不壞的土叔 我叫張陵估蹄,是天一觀的道長塑煎。 經(jīng)常有香客問我,道長臭蚁,這世上最難降的妖魔是什么最铁? 我笑而不...
    開封第一講書人閱讀 58,737評論 1 294
  • 正文 為了忘掉前任讯赏,我火速辦了婚禮,結(jié)果婚禮上冷尉,老公的妹妹穿的比我還像新娘漱挎。我一直安慰自己,他們只是感情好雀哨,可當(dāng)我...
    茶點故事閱讀 67,753評論 6 392
  • 文/花漫 我一把揭開白布磕谅。 她就那樣靜靜地躺著,像睡著了一般雾棺。 火紅的嫁衣襯著肌膚如雪膊夹。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,598評論 1 305
  • 那天捌浩,我揣著相機與錄音放刨,去河邊找鬼。 笑死嘉栓,一個胖子當(dāng)著我的面吹牛宏榕,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播侵佃,決...
    沈念sama閱讀 40,338評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼麻昼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了馋辈?” 一聲冷哼從身側(cè)響起抚芦,我...
    開封第一講書人閱讀 39,249評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎迈螟,沒想到半個月后叉抡,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,696評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡答毫,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,888評論 3 336
  • 正文 我和宋清朗相戀三年褥民,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片洗搂。...
    茶點故事閱讀 40,013評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡消返,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出耘拇,到底是詐尸還是另有隱情撵颊,我是刑警寧澤,帶...
    沈念sama閱讀 35,731評論 5 346
  • 正文 年R本政府宣布惫叛,位于F島的核電站倡勇,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏嘉涌。R本人自食惡果不足惜妻熊,卻給世界環(huán)境...
    茶點故事閱讀 41,348評論 3 330
  • 文/蒙蒙 一夸浅、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧固耘,春花似錦题篷、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,929評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至损敷,卻和暖如春葫笼,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背拗馒。 一陣腳步聲響...
    開封第一講書人閱讀 33,048評論 1 270
  • 我被黑心中介騙來泰國打工路星, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人诱桂。 一個月前我還...
    沈念sama閱讀 48,203評論 3 370
  • 正文 我出身青樓洋丐,卻偏偏與公主長得像,于是被迫代替她去往敵國和親挥等。 傳聞我的和親對象是個殘疾皇子友绝,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,960評論 2 355

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,147評論 25 707
  • 內(nèi)容抽屜菜單ListViewWebViewSwitchButton按鈕點贊按鈕進(jìn)度條TabLayout圖標(biāo)下拉刷新...
    皇小弟閱讀 46,762評論 22 665
  • 新建立了一個簡書的賬號辞槐,一直沒有寫博客的習(xí)慣掷漱,都是在qq空間寫點東西,終于發(fā)現(xiàn)簡書這個平臺榄檬,打算把我今年6月...
    gisysj閱讀 731評論 0 50
  • 今天是考完試第一天 聽了會兒夏說 洗衣服 心情不好 分析了自己的幾個問題 畫了衣服圖案 找工作 很無所適從 不知道...
    角落蜷縮閱讀 153評論 0 0
  • 深圳 天氣 晴 今天是多么美好的一天安贩丁!充滿著愛鹿榜!熱情先朦!效益!感恩犬缨!Power! 大家好!我是冬梅...
    dm小梅閱讀 192評論 0 0