系統導航欄a中跳轉到自定義樣式導航欄b,再由b傳回a時,a的樣式變成了b的自定義樣式?
方法1:在a視圖即将顯示時,再次設定其導航欄樣式,進而避免被b樣式覆寫。
方法2:在視圖b中,視圖即将顯示為設定新樣式;視圖即将消失時取消新樣式,即設定回a視圖樣式。如下代碼:
- (void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
// 自定義導航欄樣式
UINavigationBar *FTicketNavBar = self.navigationController.navigationBar;
//1-1 設定導航欄背景色
self.navBgImage = [UIImage imageNamed:@"xxx1.png"];
if ([FTicketNavBar respondsToSelector:@selector(setBackgroundImage:forBarMetrics:)])
{
[FTicketNavBar setBackgroundImage:navBgImage forBarMetrics:UIBarMetricsDefault];
}
//1-2 導航欄底端下劃線
self.navButtomline = InsertView(FTicketNavBar, CGRectMake(0.0, FTicketNavBar.frameHeight - 1.0, FTicketNavBar.frameWidth, 1.0));
navButtomline.backgroundColor = FTMainTypeColor;
}
- (void)viewWillDisappear:(BOOL)animated
{
// 設定回上層視圖樣式
UINavigationBar *FTicketNavBar = self.navigationController.navigationBar;
//1-1 設定導航欄背景色
self.navBgImage = [UIImage imageNamed:@"xxx2.png"];
if ([FTicketNavBar respondsToSelector:@selector(setBackgroundImage:forBarMetrics:)])
{
[FTicketNavBar setBackgroundImage:navBgImage forBarMetrics:UIBarMetricsDefault];
}
//1-2 導航欄底端下劃線
[self.navButtomline removeFromSuperview];
self.navButtomline = nil;
}