11

Gezinme denetleyicisinde yalnızca ana veya ilk gezinme çubuğunun gizlenmesini/kaldırılmasını/devre dışı bırakılmasını istiyorum, böylece bir görüntüyü arka plan görüntüsü olarak görüntüleyebildim ancak herhangi bir çözüm bulamadım.Yalnızca ilk uinavigationbar nasıl gizlenir/devre dışı bırakılır?

Ana gezinme denetleyicisinin viewdidLoad öğesindeki başlık görünümünü gizlemeyi deneyin, ancak çalışmadı. NavigationBarHidden'i kullanarak denediniz ancak bir sonraki kontrol birimi yığını için tüm gezinme çubuğunu gizler.

Bunu nasıl yapacağından emin değilim. Size bir örnek vermek gerekirse, bu uygulama gibi bir şey istiyorum - Masters Golf Turnuvası - http://appshopper.com/sports/the-masters-golf-tournament.

Ekran 1'e bakarsanız, üstte herhangi bir gezinme çubuğu bulunmaz, ancak herhangi bir seçeneğe dokunduğunuzda, yeni bir denetleyiciye geçecek ve gezinme çubuğunun Ekran 3,4 ve 5'teki gibi görünmesini sağlayabilirsiniz.

Herkesin bana yardımcı olabileceğini umuyorum. Çok teşekkürler!

cevap

18

Uygulamaların çoğunda, diğer tüm özel denetleyicileri türettiğim özel bir UIViewController sınıfına sahibim. Bazılarında, diğer sınıfların geçersiz kılabildiği taban sınıfına navigationBarInitiallyHidden gibi bir yöntem ekledim. Varsayılan sonuç, uygulamanın niteliğine bağlıdır.

Gezinme denetleyicisinin delegesinde, bu yöntemi uygulayan bir denetleyici gösteriliyorken, temsilci buna göre gezinme denetleyicisini gizler veya gösterir. Gizlemeyi veya gösteriyi hareketlendirdiğim için, mevcut durumu kontrol edip, herhangi bir değişiklik gerekmiyorsa hiçbir şey yapmam.

Temsilci yönteminizde daha basit bir şey yapabilirsiniz. Gösterilen denetleyici, kök denetleyicisiyse, gezinti çubuğunu gizleyin, aksi takdirde gizlenmişse gösterin.

- (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated { 
    if (viewController == rootController) { 
    [navigationController setNavigationBarHidden:YES animated:animated]; 
    } else if ([navigationController isNavigationBarHidden]) { 
    [navigationController setNavigationBarHidden:NO animated:animated]; 
    } 
} 
12

Sen gezinti çubuğu gizleyebilirsiniz: [self.navigationController setNavigationBarHidden:YES]; ve navigasyon çubuğu

self.navigationController.navigationBarHidden = YES; 

gösterisi devre dışı yine [self.navigationController setNavigationBarHidden:NO];

5

hide/görünmesini istediğiniz yere/ etkinleştirme

self.navigationController.navigationBarHidden = NO; 
0

Dümen kodunu kullanarak gezinti çubuğunu kaldırabilirsiniz. Aşağıdaki kod, viewWillAppear sırasında navigasyon çubuğunu gizleyecektir.

-(void)viewWillAppear:(BOOL)animated 
{ 
     [[self navigationController] setNavigationBarHidden:YES animated:NO]; 
} 

Swift Objective C

self.navigationController?.setNavigationBarHidden(true, animated: animated) 
İlgili konular