Customize Navigation bar
給我來個不按牌理出牌的Navigation bar
距離上次發文居然已經過了快要一個月了,原因是這個月中幸運的找到了iOS Developer的工作,這個再找時間來分享,今天要來說的是最近工作上有用到的功能。
Navigation Bar
相信這個功能連還不太會寫程式的新手朋友都會用,熟到不能再熟,透過UI元件(如:UIButton之類的),拉Segue可以換到下個畫面,而加入Navigation Controller之後會自動產生Navigation Bar,可以按Navigation Bar上面的Back鍵回到上一頁。
但是問題來了,如果我不想要回到上一頁呢?
一輩子的好朋友總會幫你的忙的。
setHidesBackButton
今天我並不想依照Navigation controller的安排,不想回到上一頁要怎麼辦呢? 其實不難,只要在viewDidLoad加上setHidesBackButton就好。
override func viewDidLoad() {
super.viewDidLoad()
self.navigationItem.setHidesBackButton(true, animated: true)
}
Customize Navigation bar
是說,隱藏Back鍵然後呢?
這是因為我想要E頁面切換到C頁面去。
在Navigation bar左邊加上Button,設定切換到C頁面。
我查到的方法是這樣:加入leftBarButtonItem然後設定顯示文字及格式等,並設定按下button後要進行什麼動作,比較不解的是,action裡的function雖然也是自訂的,但前面要加入objective-c,不知道是swift自己沒有這個方法,還是我查到的方法比較舊,原文參考網頁在公司查的,現在回到家居然找不到白天在公司查到的網址,無法再看一次(哭)。
我在這邊是用pushViewController至下一頁,當然也可以換成別的function,像是開啟相機、開啟相簿或是想開啟safari都可以,就看function裡要怎麼寫囉。
override func viewDidLoad() {
super.viewDidLoad()
self.navigationItem.setHidesBackButton(true, animated: true)
self.navigationItem.leftBarButtonItem = UIBarButtonItem(title: "至C頁面", style: .done , target: self, action: #selector(addTapped))
}@objc func addTapped(){
let controller = self.navigationController?.storyboard!.instantiateViewController(withIdentifier: "CC")
self.navigationController!.pushViewController(controller!, animated: true)
}
也可以放在右邊,只要把leftBarButtonItem改成rightBarButtonItem即可。
self.navigationItem.rightBarButtonItem = UIBarButtonItem(title: "至C頁面", style: .done , target: self, action: #selector(addTapped))
當然也可以左右邊都有Button,我公司的專案就是左右邊都有,各有不同功能,基於公司機密就不放圖了。
也不是什麼很難的問題,但多學到一個東西總是好事,所以就記錄一下囉!Swift新手也可以練習看看喔,因為這是我實際上班後有用到的東西,大家一起加油吧。
如果有值得大家參考的地方再麻煩大家幫我拍拍手喲,謝謝大家耐心閱讀🙇♀️