对于mPaaS而言,如果说有什么折磨我最久,且让我纠结最深,那么一定是navigationbar的设置了。从最初刚刚开始搭架子开始,到接下来对落地页的navbar的设置,再到微应用和h5容器的navbar。对框架的一步步摸索,到找到暂时的解决办法,再到最后终于梳理清楚了一些线索。
因为我的工程是基于mPaaS的tab框架建立的,所以每个tab页面的title, titleview, leftbarbuttonitem以及rightbarbuttonitem都对应的是tab页viewcontroller的这些属性。这块儿无可厚非。
但是有一点要注意的是,这些tab页面的属性设置是在tabcontroller的didselect函数里生效的,所以刚进入app的落地页的相关属性设置就比较重要了。
就比如我对navbar的背景色等等做出设置
这个设置其实在刚启动app时的落地页里面并不是立即生效的。所以可能需要在viewwillappear里面单独进行同样的设置。
最重要的是,上面的navbar设置在以下场景下并不生效——nebula容器启动的h5应用。对此我很快就放弃了上面的方式,因为确实是不生效啊,后来发现h5这块儿的设置要复杂一些。title格式设置都这么不小白,心疼大佬为我们小白做的框架。
要是更改左侧返回按钮,复杂度似乎更高了。并且号称自定义LeftBarItem, 将失去 kNBEvent_Scene_NavigationItem_Left_Back_Click 事件支持。意思事件还得自己重新做,有待进一步学习考察。
还有一块儿就是浸入式搜索框,就是外层做成一个button,点击进入到新的页面进行搜索。这个时候在新的搜索页面里,我们希望的navbar就是搜索框,所以默认的navbar我们就不再希望它展示了。
这个时候我们就是在viewwillappear里面把默认navbar呢hide掉,但是在viewwilldisappear里面呢把默认的navbar的hide属性再设置为false。这样的话,就不至于从这个view跳到别的view的时候默认的navbar也不显示。