Gambar tombol kustom tanpa pengaturan bingkai tombol:
Anda dapat menggunakan init(image: UIImage?, style: UIBarButtonItemStyle, target: Any?, action: Selector?)
untuk menginisialisasi item baru menggunakan gambar yang ditentukan dan properti lainnya.
let button1 = UIBarButtonItem(image: UIImage(named: "imagename"), style: .plain, target: self, action: Selector("action")) // action:#selector(Class.MethodName) for swift 3
self.navigationItem.rightBarButtonItem = button1
Periksa Apple Doc ini. referensi
UIBButtonItem dengan gambar tombol khusus menggunakan bingkai tombol
UNTUK Swift 3.0
let btn1 = UIButton(type: .custom)
btn1.setImage(UIImage(named: "imagename"), for: .normal)
btn1.frame = CGRect(x: 0, y: 0, width: 30, height: 30)
btn1.addTarget(self, action: #selector(Class.Methodname), for: .touchUpInside)
let item1 = UIBarButtonItem(customView: btn1)
let btn2 = UIButton(type: .custom)
btn2.setImage(UIImage(named: "imagename"), for: .normal)
btn2.frame = CGRect(x: 0, y: 0, width: 30, height: 30)
btn2.addTarget(self, action: #selector(Class.MethodName), for: .touchUpInside)
let item2 = UIBarButtonItem(customView: btn2)
self.navigationItem.setRightBarButtonItems([item1,item2], animated: true)
UNTUK Swift 2.0
dan lebih tua
let btnName = UIButton()
btnName.setImage(UIImage(named: "imagename"), forState: .Normal)
btnName.frame = CGRectMake(0, 0, 30, 30)
btnName.addTarget(self, action: Selector("action"), forControlEvents: .TouchUpInside)
//.... Set Right/Left Bar Button item
let rightBarButton = UIBarButtonItem()
rightBarButton.customView = btnName
self.navigationItem.rightBarButtonItem = rightBarButton
Atau cukup gunakan init (customView :) like
let rightBarButton = UIBarButtonItem(customView: btnName)
self.navigationItem.rightBarButtonItem = rightBarButton
Untuk Sistem UIBButtonItem
let camera = UIBarButtonItem(barButtonSystemItem: .Camera, target: self, action: Selector("btnOpenCamera"))
self.navigationItem.rightBarButtonItem = camera
Untuk mengatur lebih dari 1 item gunakan rightBarButtonItems
atau untuk sisi kirileftBarButtonItems
let btn1 = UIButton()
btn1.setImage(UIImage(named: "img1"), forState: .Normal)
btn1.frame = CGRectMake(0, 0, 30, 30)
btn1.addTarget(self, action: Selector("action1:"), forControlEvents: .TouchUpInside)
let item1 = UIBarButtonItem()
item1.customView = btn1
let btn2 = UIButton()
btn2.setImage(UIImage(named: "img2"), forState: .Normal)
btn2.frame = CGRectMake(0, 0, 30, 30)
btn2.addTarget(self, action: Selector("action2:"), forControlEvents: .TouchUpInside)
let item2 = UIBarButtonItem()
item2.customView = btn2
self.navigationItem.rightBarButtonItems = [item1,item2]
Menggunakan setLeftBarButtonItem
atausetRightBarButtonItem
let btn1 = UIButton()
btn1.setImage(UIImage(named: "img1"), forState: .Normal)
btn1.frame = CGRectMake(0, 0, 30, 30)
btn1.addTarget(self, action: Selector("action1:"), forControlEvents: .TouchUpInside)
self.navigationItem.setLeftBarButtonItem(UIBarButtonItem(customView: btn1), animated: true);
Untuk swift> = 2.2 aksi harus #selector(Class.MethodName)
... misalnyabtnName.addTarget(self, action: #selector(Class.MethodName), forControlEvents: .TouchUpInside)
let camera = UIBarButtonItem(barButtonSystemItem: .Camera, target: self, action: #selector(Class.MethodName))
Jauh lebih mudah dengan
Swift 4
atauSwift 4.2
di dalam
ViewDidLoad
metode Anda , tentukan tombol Anda dan tambahkan ke bilah navigasi.maka Anda perlu mendefinisikan fungsi yang Anda sebutkan di dalam parameter tindakan seperti di bawah ini
Anda perlu menambahkan
@objc
awalan karena masih menggunakan hal-hal yang lama (Objective C).sumber
Cukup setup
UIBarButtonItem
dengan customViewSebagai contoh:
atau gunakan
setFunction
:sumber
Saya baru saja menemukan pertanyaan ini dan ini adalah pembaruan untuk Swift 3 dan iOS 10:
Ini jelas jauh lebih cepat daripada membuat UIButton dengan semua properti dan kemudian menambahkan customView ke UIBarButtonItem.
Dan jika Anda ingin mengubah warna gambar dari biru default menjadi putih, Anda selalu dapat mengubah warna warna:
PS Anda jelas harus mengubah pemilih dll untuk aplikasi Anda :)
sumber
Di Swift 3.0+, secara
UIBarButtonItem
terprogram diatur sebagai berikut:sumber
Pengaturan LeftBarButton dengan Gambar Asli.
sumber
Saya memiliki masalah yang sama dan saya telah membaca jawaban di topik lain kemudian saya memecahkan cara serupa lainnya. Saya tidak tahu mana yang lebih efektif. masalah serupa
sumber
Ini adalah hal gila dari apel. Ketika Anda mengatakan self.navigationItem.rightBarButtonItem.title maka ia akan mengatakan nol pada GUI itu menunjukkan Edit atau Simpan. Orang baru seperti saya akan membutuhkan banyak waktu untuk men-debug perilaku ini.
Ada persyaratan bahwa Item akan menampilkan Edit dalam beban pertama lalu pengguna mengetuknya. Item tersebut akan berubah menjadi Simpan judul. Untuk mengarsipkan ini, saya lakukan seperti di bawah ini.
// lihat apakah memuat akan mengatakan Edit judul
// ketuk Edit item akan berubah ke Simpan judul
// ketuk Simpan item akan menampilkan Edit judul
sumber
iOS 11
Mengatur tombol khusus menggunakan batasan:
sumber
sumber