關(guān)于UIViewController的屬性——hidesBottomBarWhenPushed

今天閑來無事來聊一聊這個反復(fù)刷新我開發(fā)觀的屬性——hidesBottomBarWhenPushed。

在開發(fā)的過程中總會遇到有些頁面有tabbar,而有些頁面沒有。比如:

那么有tabbar的頁面去往沒有的頁面就需要調(diào)用屬性self.hidesBottomBarWhenPushed=YES;

可是,這個屬性并不是這么簡單就可以的。你push過去了回來還需要有tabbar。這個時候又怎么辦呢?好的,我上網(wǎng)查了一下,于是有了第一種方法。

方法1.

self.hidesBottomBarWhenPushed=YES;

[self.navigationController pushViewController:[WebViewController new]animated:YES];

self.hidesBottomBarWhenPushed=NO;


我親身測試成功,這樣確實可以而且用了好長時間,到后來項目快結(jié)束的時候我發(fā)現(xiàn)很多地方都有這樣的話對于優(yōu)化代碼來說實在太麻煩。我就想沒有什么更好的解決辦法了嗎?于是我又上網(wǎng)搜了一下。于是,就有了下面這樣的改進:

方法2.

WebViewController *VC = [WebViewController new];

VC.hidesBottomBarWhenPushed=YES;

[self.navigationController pushViewController:VC animated:YES];


這樣寫之后,可以保證hidesBottomBarWhenPushed的屬性有每一個控制器單獨管理,相對來說更加清晰一些??墒俏铱偸歉杏X有些怪怪的。難道每次push的時候都要這樣寫嗎?于是我不死心,繼續(xù)上網(wǎng)搜查有沒有更好的解決辦法,終于我發(fā)現(xiàn)了一個簡直就是對我的項目量身定做的一個方法:

方法3.

在每一個視圖控制器內(nèi)的方法做如下操作:

- (void)viewDidAppear:(BOOL)animated {

[superviewDidAppear:animated];

self.hidesBottomBarWhenPushed=YES;

}

在需要顯示tabbar的視圖控制器中做這樣的操作:

- (void)viewDidDisappear:(BOOL)animated {

[superviewDidDisappear:animated];

self.hidesBottomBarWhenPushed=NO;

}

這樣就完全把hidesBottomBarWhenPushed的屬性交給每一個視圖控制器管理了??墒怯腥艘獑柫耍@樣不是比之前兩個方法更麻煩嗎?這里就要說為什么這個方法是量身定做的了。

因為我的所有視圖控制器都繼承于一個自定義的JPTViewController。所以我在這里面實現(xiàn)

- (void)viewDidAppear:(BOOL)animated {

[superviewDidAppear:animated];

self.hidesBottomBarWhenPushed=YES;

}

的方法其他所有視圖控制器都能夠?qū)崿F(xiàn)這樣的功能。而我只在“首頁”“產(chǎn)品”“我的”“更多”這四個需要顯示tabbar的頁面實現(xiàn)

- (void)viewDidDisappear:(BOOL)animated {

[superviewDidDisappear:animated];

self.hidesBottomBarWhenPushed=NO;

}

方法就可以了。


這就是為什么這個方法對我來說是量身定做了。

我也不知道有沒有其他的方法,總之這里只是總結(jié)一下我使用這個屬性的心得。

如果有其他更好的方法,希望大神賜教。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容