Bagaimana cara menambahkan tombol ke UINavigationBar secara terprogram?
Bagaimana cara menambahkan tombol ke UINavigationBar secara terprogram?
Jawaban:
Contoh kode untuk mengatur rightbutton
pada a 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];
Tetapi biasanya Anda akan memiliki NavigationController
, memungkinkan Anda untuk menulis:
UIBarButtonItem *rightButton = [[UIBarButtonItem alloc] initWithTitle:@"Done"
style:UIBarButtonItemStyleDone target:nil action:nil];
self.navigationItem.rightBarButtonItem = rightButton;
[rightbutton release]
bawah ARC (yang tidak ada pada saat komentar ini pertama kali ditulis).
Jawaban di atas bagus, tetapi saya ingin menyempurnakannya dengan beberapa tip lagi:
Jika Anda ingin mengubah judul tombol kembali (panah-y tampak di kiri bilah navigasi) Anda HARUS melakukannya di pengontrol tampilan SEBELUMNYA, bukan yang akan ditampilkan. Ini seperti mengatakan "hei, jika Anda pernah menekan pengontrol tampilan lain di atas yang satu ini, panggil tombol kembali" Kembali "(atau apa pun) alih-alih default."
Jika Anda ingin menyembunyikan tombol kembali selama status khusus, seperti saat UIPickerView ditampilkan, gunakan self.navigationItem.hidesBackButton = YES;
dan ingat untuk menyetelnya kembali saat Anda meninggalkan status khusus.
Jika Anda ingin menampilkan salah satu tombol simbolik khusus, gunakan formulir initWithBarButtonSystemItem:target:action
dengan nilai sepertiUIBarButtonSystemItemAdd
Ingat, arti simbol itu terserah Anda, tapi hati-hatilah dengan Panduan Antarmuka Manusia. Menggunakan UIBarButtonSystemItemAdd berarti menghapus item mungkin akan membuat aplikasi Anda ditolak.
Menambahkan tombol kustom ke bilah navigasi (dengan gambar untuk buttonItem dan menentukan metode aksi (void) openView {} dan).
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];
Contoh di bawah ini akan menampilkan tombol dengan judul "Kontak" pada bilah navigasi di sebelah kanan. Tindakannya memanggil metode bernama "kontak" dari viewcontroller. Tanpa garis ini tombol kanan tidak terlihat.
self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"Contact"
style:UIBarButtonItemStylePlain target:self action:@selector(contact:)];;
Di Swift 2, Anda akan melakukan:
let rightButton: UIBarButtonItem = UIBarButtonItem(title: "Done", style: UIBarButtonItemStyle.Done, target: nil, action: nil)
self.navigationItem.rightBarButtonItem = rightButton
(Bukan perubahan besar) Di Swift 4/5, itu akan menjadi:
let rightButton: UIBarButtonItem = UIBarButtonItem(title: "Done", style: UIBarButtonItem.Style.done, target: nil, action: nil)
self.navigationItem.rightBarButtonItem = rightButton
Mengapa tidak menggunakan yang berikut ini: (dari Draw custom Back button di iPhone Navigation Bar )
// 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];
cepat 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)
}