今天閑來無事來聊一聊這個反復(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)搜了一下再榄。于是,就有了下面這樣的改進(jìn):
方法2.
WebViewController *VC = [WebViewController new]享潜;
VC.hidesBottomBarWhenPushed=YES;
[self.navigationController pushViewController:VC animated:YES];
這樣寫之后困鸥,可以保證hidesBottomBarWhenPushed的屬性有每一個控制器單獨管理,相對來說更加清晰一些剑按〖簿停可是我總是感覺有些怪怪的。難道每次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é)一下我使用這個屬性的心得。
如果有其他更好的方法薄坏,希望大神賜教趋厉。