WMPageController (頂部tab切換效果)的使用

首先貼上WMPageController的地址萍诱,也有swift版本哦,再次感謝作者的開源铭腕。:github地址:WMPageController

具體效果圖:


頂部tab切換效果圖.gif

使用:

1柿究、具體引入方式,作者已經(jīng)寫得很清楚了孤里,支持手動和CocoaPods集成方式伏伯。代碼簡單容易上手。

2捌袜、實現(xiàn)方式:

創(chuàng)建一個控制器VC繼承自WMPageController, 可以通過兩種方式來初始化控制器

1.通過 Class 創(chuàng)建
使用以下方法創(chuàng)建控制器:

- (instancetype)initWithViewControllerClasses:(NSArray *)classes andTheirTitles:(NSArray *)titles;

其中说搅,Classes是要傳人顯示的控制器的類型,比如[UITableViewController class], titles是要顯示的控制對應(yīng)的標(biāo)題虏等。

這里需要注意的一點弄唧,當(dāng)你的WMPageController在tabbarController的時候适肠,初始化必須放在一起,在重寫- (instancetype)initWithViewControllerClasses:(NSArray *)classes andTheirTitles:(NSArray *)titles這個方法是不可以的候引。如圖:
這里重寫是可以的.png

2.使用 datasource
使用方法和 UITableView 相似侯养,在子類中實現(xiàn)以下數(shù)據(jù)源方法即可:

- (NSInteger)numbersOfChildControllersInPageController:(WMPageController *)pageController;
- (__kindof UIViewController *)pageController:(WMPageController *)pageController viewControllerAtIndex:(NSInteger)index;
- (NSString *)pageController:(WMPageController *)pageController titleAtIndex:(NSInteger)index;

相對而言,第一種方法比較簡單省事背伴,我使用的是第一種方法集成沸毁。
但是這里有兩個地方需要注意一下:

1.假如你頂部切換tab有很多個childVC,你的根控制器又是在tabbarController里傻寂,在你初始化的時候息尺,很不方便,這時需要把所有的childVC都要引入進(jìn)來疾掰,導(dǎo)致本來tabbarController的VC就夠多了搂誉,在加上這些VC,顯得很亂静檬。所以作者有一個很好的辦法炭懊,設(shè)置你所需要的屬性,在調(diào)用一下reloadData方法就OK了拂檩。下圖的栗子:tab5個VC侮腹,第二個tab帶有頂部切換效果,還帶有三個childVC稻励,本來在設(shè)置tabbarController父阻,又引入了三個不一樣的VC。根據(jù)代碼簡潔之道望抽,這要寫不好加矛。

放在那里就是不爽.png

解決辦法:在你需要帶有頂部切換VC初始化方法中,重寫設(shè)置切換VC以及其屬性煤篙。

我覺得比較好的方法.png

這樣就很簡單的實現(xiàn)了頂部切換效果了斟览。。

2.傳值問題
假如你的切換childVC創(chuàng)建的時候辑奈,需要傳值過去苛茂,就要用到keys和values屬性。
注意:keys必須是是你childVC的屬性名身害,values對應(yīng)要傳的值味悄,必須一一對應(yīng),且keys數(shù)量必須與childVC的數(shù)量一致 這時候你說塌鸯,要是我某一個VC需要多個傳值怎么辦侍瑟? 解決辦法:將多個傳值組合成一個model或是字典進(jìn)行傳值

單參數(shù)要一一對應(yīng)各自的屬性哦.png

當(dāng)某一個VC需要傳多個參數(shù)的時候,(這時候選擇使用DataSource代理的形式集成是非常不錯的選擇),我這里用的是init方法集成:

多參數(shù)產(chǎn)值要封裝為一個哦.png

上面這種方法涨颜,當(dāng)你是后期集成這個庫到你的項目中费韭,可能會有點局限性。
集成tabVC的時候庭瑰,需要傳多個參數(shù)值星持,但是在其他地方跳轉(zhuǎn)過來的時候,可能只需要一個參數(shù)弹灭。這時候你在集成的時候?qū)⒍鄠€參數(shù)封裝成一個字典督暂,其他所有跳轉(zhuǎn)這個VC的地方都要將傳參改成字典形式,很麻煩穷吮。

在原來代碼的基礎(chǔ)上逻翁,我做了一點改進(jìn):在集成tabVC的時候,不管多少個參數(shù)捡鱼,都封裝成字典八回,keys的名稱隨便寫,也不需要去tabVC里新添加這個屬性驾诈,values還是和之前一樣缠诅,是你要傳參的值。乍迄。其他地方還保持原來的樣式不需要任何改變管引。具體代碼見:NEW WMPageController README 文件里有添加介紹。
改進(jìn)的WMPageController.png

更新:在與作者取得溝通之后闯两,才知道作者已經(jīng)做了這方面的處理汉匙,假如傳值很復(fù)雜的情況,最好使用代理方法集成生蚁。代理方法更適用于傳值復(fù)雜的情況,條理也比較清晰戏自。再次感謝作者的開源邦投。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市擅笔,隨后出現(xiàn)的幾起案子志衣,更是在濱河造成了極大的恐慌,老刑警劉巖猛们,帶你破解...
    沈念sama閱讀 217,277評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件念脯,死亡現(xiàn)場離奇詭異,居然都是意外死亡弯淘,警方通過查閱死者的電腦和手機绿店,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,689評論 3 393
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人假勿,你說我怎么就攤上這事借嗽。” “怎么了转培?”我有些...
    開封第一講書人閱讀 163,624評論 0 353
  • 文/不壞的土叔 我叫張陵恶导,是天一觀的道長。 經(jīng)常有香客問我浸须,道長惨寿,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,356評論 1 293
  • 正文 為了忘掉前任删窒,我火速辦了婚禮裂垦,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘易稠。我一直安慰自己缸废,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,402評論 6 392
  • 文/花漫 我一把揭開白布驶社。 她就那樣靜靜地躺著企量,像睡著了一般。 火紅的嫁衣襯著肌膚如雪亡电。 梳的紋絲不亂的頭發(fā)上届巩,一...
    開封第一講書人閱讀 51,292評論 1 301
  • 那天,我揣著相機與錄音份乒,去河邊找鬼恕汇。 笑死,一個胖子當(dāng)著我的面吹牛或辖,可吹牛的內(nèi)容都是我干的瘾英。 我是一名探鬼主播,決...
    沈念sama閱讀 40,135評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼颂暇,長吁一口氣:“原來是場噩夢啊……” “哼缺谴!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起耳鸯,我...
    開封第一講書人閱讀 38,992評論 0 275
  • 序言:老撾萬榮一對情侶失蹤湿蛔,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后县爬,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體阳啥,經(jīng)...
    沈念sama閱讀 45,429評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,636評論 3 334
  • 正文 我和宋清朗相戀三年财喳,在試婚紗的時候發(fā)現(xiàn)自己被綠了察迟。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,785評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖卷拘,靈堂內(nèi)的尸體忽然破棺而出喊废,到底是詐尸還是另有隱情,我是刑警寧澤栗弟,帶...
    沈念sama閱讀 35,492評論 5 345
  • 正文 年R本政府宣布污筷,位于F島的核電站,受9級特大地震影響乍赫,放射性物質(zhì)發(fā)生泄漏瓣蛀。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,092評論 3 328
  • 文/蒙蒙 一雷厂、第九天 我趴在偏房一處隱蔽的房頂上張望惋增。 院中可真熱鬧,春花似錦改鲫、人聲如沸诈皿。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,723評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽稽亏。三九已至,卻和暖如春缕题,著一層夾襖步出監(jiān)牢的瞬間截歉,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,858評論 1 269
  • 我被黑心中介騙來泰國打工烟零, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留瘪松,地道東北人。 一個月前我還...
    沈念sama閱讀 47,891評論 2 370
  • 正文 我出身青樓锨阿,卻偏偏與公主長得像宵睦,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子墅诡,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,713評論 2 354

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

  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫状飞、插件、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 12,101評論 4 62
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理书斜,服務(wù)發(fā)現(xiàn),斷路器酵使,智...
    卡卡羅2017閱讀 134,654評論 18 139
  • 過新都橋口渔,轉(zhuǎn)塔公草原样屠,朝丹巴方向前行,經(jīng)過 一個叫八美鎮(zhèn)的地方,屬道孚縣痪欲,打聽到有個4A級風(fēng)景區(qū)墨石公園悦穿,原來叫八...
    心影夢畫閱讀 1,015評論 0 0
  • swift調(diào)用環(huán)信錄音的方法 ##### 五級標(biāo)題
    就想隨便看看還不行嗎閱讀 178評論 0 0
  • 忽悠這個詞很有意思。 首先业踢,ta不算“騙人”栗柒,因為動機是誆你。 再而知举,ta不算“實話”瞬沦,因為目的是誆你。 介于兩者...
    Will閱讀 394評論 1 1