İPhone'da gezinme çubuğunda 'Geri' düğmesini nasıl gizleyebilirim?


315

Uygulamamdaki görünümler arasında geçiş yapmak için bir gezinme kontrolü ekledim. Ancak bazı görünümlerde 'Geri' (önceki başlık) düğmesi olmamalıdır. Geri düğmesini gizleme hakkında herhangi bir fikriniz var mı?

Yanıtlar:


812

Objective-C:
self.navigationItem.hidesBackButton = YES;

Swift:
navigationItem.hidesBackButton = true


@ user8170 gezinti çubuğunda sol barbuttonitem nasıl gizlenir ..?
rockey

9
düğmesini kullanarak gizleyemezsiniz self.navigationItem.leftBarButtonItem = nil;. Leftbarbuttonitem'i açık bir şekilde ayarladıysanız kullanabilirsiniz self.navigationItem.leftBarButtonItem = nil;. self.navigationItem.hidesBackButton = YES;Geri düğmesini gizleyecek Öğe
rakeshNS

1
İOS 7'de self.navigationItem.leftBarButtonItem = nil; viewDidLoad, viewWillAppear veya viewDidAppear öğelerinden yayınlandığında geri düğmesini etkilemez. Bu kod satırı viewdidLoad içinde çalışır: self.navigationItem.hidesBackButton = YES;
Alex Zavatone

2
bunun işe yarayıp yaramadığından emin değilim ama 'benlik' her zaman gezinti denetleyicisi yığınının üstünde sunulan bir görünüm denetleyicisidir.
Kunal Balani

self.navigationItem.hidesBackButton = EVET; Bana göre
çalışırDidLoad

38

Bunları birleştirmenin en iyi yolu, manuel olarak ayarlasanız bile geri düğmesini gizleyecektir:

self.navigationItem.leftBarButtonItem=nil;
self.navigationItem.hidesBackButton=YES;

6
User716216'ya cevap vermek için, onu bir cümle açıklamasında açıkladı. İkinci kod satırı, varsayılan durum için işe yarar. Düğmeyi kendiniz oluşturup eklediyseniz ilk kod satırı çalışır.
Alex Zavatone

21

feryat kodu ile geri düğmesi gizle ...

[self.navigationItem setHidesBackButton:YES animated:YES];

veya

[self.navigationItem setHidesBackButton:YES];

Ayrıca özel varsa UINavigationBaro zaman feryat kodu deneyin

self.navigationItem.leftBarButtonItem = nil;

Herhangi bir sınıfta bu kodu kullandığınızda o sınıfın gezinme çubuğunda geri düğmesi gizlenir ...
Paras Joshi

6

In Swift :

Bunu denetleyiciye ekle

override func viewDidLoad() {
    super.viewDidLoad()
    self.navigationItem.setHidesBackButton(true, animated: false)
}


3

UIViewController öğesinin viewDidLoad işlevinde kodu kullanın:

self.navigationItem.hidesBackButton = YES;

2

Gezinme denetleyicisine sahip nesne üzerinde çağırmanız gerektiğini unutmayın. Örneğin, bir RootViewController ile sekme çubuğu denetleyicisini iten gezinme denetleyiciniz varsa self.navigationItem.hidesBackButton = YES, RootViewController'ı çağırmak hiçbir şey yapmaz. Aslında aramak zorundasınself.tabBarController.navigationItem.hidesBackButton = YES


2

Şimdi arka arkaya kaydırma hareketine sahip olduğumuzu unutmayın. Muhtemelen bunu da kaldırmak istersiniz. Gerekirse tekrar etkinleştirmeyi unutmayın.

if ([self.navigationItem respondsToSelector:@selector(hidesBackButton)]) {
    self.navigationItem.hidesBackButton = YES;
}

if ([self.navigationController respondsToSelector:@selector(interactivePopGestureRecognizer)]) {
    self.navigationController.interactivePopGestureRecognizer.enabled = NO;
}

1

Bu kodu görünüm denetleyicinize ekleyin

UIView *myView = [[UIView alloc] initWithFrame: CGRectMake(0, 0, 300, 30)];
UIBarButtonItem *btnL = [[UIBarButtonItem alloc]initWithCustomView:myView];
self.navigationItem.leftBarButtonItem = btnL;

1

Benim için yukarıdakilerin hiçbiri işe yaramadı, görsel bir etkisi yoktu. Bir gezinti denetleyicisine "katıştırılmış" görünümde film şeridi kullanıyorum.

Sonra kod düzeyinde benim menuItems ekleyin ve nedense "backButton" görünüm hiyerarşisinde görsel hata ayıklama görünür ve görünmez "geri düğmesi" altında benim menuItem simgesi görüntülenir.

Çeşitli kanca yöntemlerinde önerildiği gibi ayarları denedim ve bunun bir etkisi olmadı. Sonra daha acımasız bir yaklaşım denedim ve alt etkisi de tekrar etmedi.

Simge boyutlarını inceledim ve iyi görünüyordu. Apple İnsan Arayüz Kılavuzuna baktıktan sonra Simgelerimin doğru olduğunu onayladım. (Benim durumumda 1 piksel daha küçük 24px 48px 72px).

O zaman en garip kısım asıl düzeltme ...

BarButton Öğesini eklerken, en az bir karakterli bir başlık verin , Benim durumumda bir boşluk karakteri.

Umarım bu birine yardımcı olur.

//left menu - the title must have a space
UIBarButtonItem *leftButtonItem = [[UIBarButtonItem alloc] initWithTitle:@" " <--THE FIX 
                                                                    style:UIBarButtonItemStylePlain
                                                                  target:self
                                                                  action:@selector(showMenu)];
leftButtonItem.image = [UIImage imageNamed:@"ic_menu"];

[self.navigationItem setLeftBarButtonItem:leftButtonItem];

1

Set ettiğimde benim için işe yaramıyordu

self.navigationItem.hidesBackButton = EVET;

viewWillAppear veya ViewDidLoad, ancak viewController init olarak ayarlandığında mükemmel çalıştı.


0

bunu dene - self.navigationController?.navigationItem.hidesBackButton = true



0
navigationItem.leftBarButtonItem = nil
navigationItem.hidesBackButton = true

Bu kod bloğunu didLoad veya loadView içinde kullanırsanız, ancak mükemmel çalışmıyorsa dikkatlice bakarsanız, görünümünüz yüklendiğinde geri düğmesinin gizlendiğini görebilirsiniz.

Mükemmel çözüm nedir?

Ekle BarButtonItem ComponentView dan bileşeni (Command + Shift + L) hedef viewControllers gezinti çubuğuna.

Sağ panelden BarButtonItem set Title = "" öğesini seçin

resim açıklamasını buraya girin

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.