UINavigationBar'a programlı olarak bir düğme nasıl eklenir?
UINavigationBar'a programlı olarak bir düğme nasıl eklenir?
Yanıtlar:
Örnek kod ayarlamak için rightbutton
bir üstünde NavigationBar
.
UIBarButtonItem *rightButton = [[UIBarButtonItem alloc] initWithTitle:@"Done"
style:UIBarButtonItemStyleDone target:nil action:nil];
UINavigationItem *item = [[UINavigationItem alloc] initWithTitle:@"Title"];
item.rightBarButtonItem = rightButton;
item.hidesBackButton = YES;
[bar pushNavigationItem:item animated:NO];
Ancak normalde yazmanızı NavigationController
sağlayan bir a sahip olursunuz:
UIBarButtonItem *rightButton = [[UIBarButtonItem alloc] initWithTitle:@"Done"
style:UIBarButtonItemStyleDone target:nil action:nil];
self.navigationItem.rightBarButtonItem = rightButton;
[rightbutton release]
ARC altında arama yapmak için herhangi bir neden olduğuna inanmıyorum (bu yorumun ilk yazıldığı sırada ortalıkta yoktu).
Yukarıdaki cevaplar güzel, ancak birkaç ipucu ile bunları detaylandırmak istiyorum:
Geri düğmesinin başlığını değiştirmek istiyorsanız (gezinme çubuğunun soluna bakan ok-y), görüntüleyeceği değil ÖNCEKİ görünüm denetleyicisinde yapmanız GEREKİR. "Hey, bunun üzerine başka bir görüntü denetleyicisine basarsanız, varsayılan yerine" Geri "(veya her neyse) geri düğmesini arayın" demek gibi bir şey.
Bir UIPickerView görüntülenirken olduğu gibi özel bir durum sırasında geri düğmesini gizlemek istiyorsanız, özel durumdan self.navigationItem.hidesBackButton = YES;
çıktığınızda geri düğmesini kullanın ve bunu geri ayarlamayı unutmayın.
Özel sembolik düğmelerden birini görüntülemek istiyorsanız, formu aşağıdaki initWithBarButtonSystemItem:target:action
gibi bir değerle kullanın:UIBarButtonSystemItemAdd
Unutmayın, bu sembolün anlamı size bağlıdır, ancak İnsan Arayüzü Yönergelerine dikkat edin. Bir öğeyi silmek için UIBarButtonSystemItemAdd kullanılması, muhtemelen uygulamanızın reddedilmesine neden olacaktır.
Gezinme çubuğuna özel düğme ekleme (buttonItem için görüntü ile ve eylem yöntemini (void) belirten openView {} ve).
UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
button.frame = CGRectMake(0, 0, 32, 32);
[button setImage:[UIImage imageNamed:@"settings_b.png"] forState:UIControlStateNormal];
[button addTarget:self action:@selector(openView) forControlEvents:UIControlEventTouchUpInside];
UIBarButtonItem *barButton=[[UIBarButtonItem alloc] init];
[barButton setCustomView:button];
self.navigationItem.rightBarButtonItem=barButton;
[button release];
[barButton release];
Aşağıdaki örnek, sağdaki gezinme çubuğunda "Kişi" başlıklı bir düğme gösterecektir. Eylemi, görüntü denetleyiciden "kişi" adlı bir yöntemi çağırır. Bu satır olmadan sağ düğme görünmez.
self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"Contact"
style:UIBarButtonItemStylePlain target:self action:@selector(contact:)];;
Swift 2'de şunları yaparsınız:
let rightButton: UIBarButtonItem = UIBarButtonItem(title: "Done", style: UIBarButtonItemStyle.Done, target: nil, action: nil)
self.navigationItem.rightBarButtonItem = rightButton
(Büyük bir değişiklik değil) Swift 4/5'te şöyle olacak:
let rightButton: UIBarButtonItem = UIBarButtonItem(title: "Done", style: UIBarButtonItem.Style.done, target: nil, action: nil)
self.navigationItem.rightBarButtonItem = rightButton
Neden aşağıdakileri kullanmıyorsunuz: ( iPhone Gezinme Çubuğundaki özel Geri çiz düğmesinden )
// Add left
UINavigationItem *previousItem = [[UINavigationItem alloc] initWithTitle:@"Back title"];
UINavigationItem *currentItem = [[UINavigationItem alloc] initWithTitle:@"Main Title"];
[self.navigationController.navigationBar setItems:[NSArray arrayWithObjects:previousItem, currentItem, nil] animated:YES];
// set the delegate to self
[self.navigationController.navigationBar setDelegate:self];
hızlı 3
let cancelBarButton = UIBarButtonItem(title: "Cancel", style: .done, target: self, action: #selector(cancelPressed(_:)))
cancelBarButton.setTitleTextAttributes( [NSFontAttributeName : UIFont.cancelBarButtonFont(),
NSForegroundColorAttributeName : UIColor.white], for: .normal)
self.navigationItem.leftBarButtonItem = cancelBarButton
func cancelPressed(_ sender: UIBarButtonItem ) {
self.dismiss(animated: true, completion: nil)
}