2015-12-15 13 views
6

मैं एक UIBarButton आइटम है कि वापस प्रोग्राम के रूप में निम्नलिखित कोड का उपयोग कर जा सकते हैं बनाने के लिए कर रहा था:स्विफ्ट में "बैक" UIBarButton आइटम प्रोग्रामेटिक रूप से कैसे बनाएं?

func backAction() -> Void {   
     self.navigationController?.popViewControllerAnimated(true) 
    } 
override func viewDidLoad() { 
     super.viewDidLoad() 
    let backButton = UIBarButtonItem(title: "Back", style: UIBarButtonItemStyle.Plain, target: self, action: "backAction") 

     self.navigationItem.leftBarButtonItem = backButton 
    } 

समस्या यह है कि वापस बटन छोड़ दिया इंगित करते हुए तीर नहीं है: enter image description here वहाँ एक रास्ता है इसे इस तरह के तीर के साथ नियमित बैक बटन की तरह दिखने के लिए: enter image description here

मैं यह भी जानना चाहूंगा कि क्या बटन शीर्षक शीर्षक पिछले दृश्य नियंत्रक के शीर्षक के रूप में बनाने का कोई तरीका है, यदि यह संभव है।

धन्यवाद

+0

तुम कैसे दिखाई नियंत्रक से नेविगेट कर रहे हैं? क्या यह उपस्थित दृश्य नियंत्रक या pushViewController है? – silentBeep

+0

यह "वर्तमान मॉड्यूल" के माध्यम से है और नेविगेशन नियंत्रक के माध्यम से नहीं –

उत्तर

20

नीचे आप UIBarButtonItem

override func viewDidLoad() { 
    super.viewDidLoad() 
    var backbutton = UIButton(type: .Custom) 
    backbutton.setImage(UIImage(named: "BackButton.png"), forState: .Normal) // Image can be downloaded from here below link 
    backbutton.setTitle("Back", forState: .Normal) 
    backbutton.setTitleColor(backbutton.tintColor, forState: .Normal) // You can change the TitleColor 
    backbutton.addTarget(self, action: "backAction", forControlEvents: .TouchUpInside) 

    self.navigationItem.leftBarButtonItem = UIBarButtonItem(customView: backbutton) 
} 

func backAction() -> Void {   
    self.navigationController?.popViewControllerAnimated(true) 
} 

के लिए एक customView रूप में जोड़ सकते छवि के साथ UIButton का उपयोग करके कोड है यहाँ कि कैसे करना है दिखा एक छवि है BackButton.pngDownload Link

पिछले दृश्य नियंत्रक शीर्षक के साथ बैकबटन का शीर्षक सेट करने के लिए आपको नियंत्रण प्रस्तुत करते समय शीर्षक को स्ट्रिंग के रूप में पास करना होगा

var titleStrFromPreviousController: String // This value has to be set from previous controller while presenting modal controller 
backbutton.setTitle(titleStrFromPreviousController, forState: .Normal) 

यह मदद कर सकता है। 13 और ऊंचाई:

स्विफ्ट 3

override func viewDidLoad() { 
    super.viewDidLoad() 

    addBackButton() 
} 

func addBackButton() { 
    let backButton = UIButton(type: .custom) 
    backButton.setImage(UIImage(named: "BackButton.png"), for: .normal) // Image can be downloaded from here below link 
    backButton.setTitle("Back", for: .normal) 
    backButton.setTitleColor(backButton.tintColor, for: .normal) // You can change the TitleColor 
    backButton.addTarget(self, action: #selector(self.backAction(_:)), for: .touchUpInside) 

    self.navigationItem.leftBarButtonItem = UIBarButtonItem(customView: backButton) 
} 

@IBAction func backAction(_ sender: UIButton) { 
    let _ = self.navigationController?.popViewController(animated: true) 
} 
+0

छवि बड़ी –

+0

पर दिखाई दे रही है, आपको छवि आकार के लिए https://developer.apple.com/ios/human-interface-guidelines/icons-and-images/custom-icons/ का पालन करना चाहिए – silentBeep

3

आप एक नेविगेशन नियंत्रक में आपके विचार एम्बेड करके कर सकते हैं। navigationController

आशा है कि यह मदद करता है:: डी

+0

बैक बटन दिखाई नहीं देता है? क्या मुझे इसे मैन्युअल रूप से जोड़ना है? –

+0

यह डिफ़ॉल्ट रूप से प्रदर्शित होना चाहिए – Pixele9

0

पहले उत्तर अच्छा काम करता है फिर भी छवि थोड़ा बहुत बड़ा तो पूर्वावलोकन का उपयोग करें और इसे नीचे पैमाने चौड़ाई है 22, भी अपने रेंडरिंग मोड सेट .alwaysTemplate पर और UIButton के रंग को सफेद में बदलें, जबकि स्ट्रिंग से पहले रिक्त स्थान में जोड़ना: "पीछे"। इसके परिणामस्वरूप नेविगेशन बार बैक बटन के समान कुछ शांत होगा, छवि आकार और प्लेसमेंट के मामले में बेहतर हो सकती है।

संपादित कोड:

 func addBackButton() { 


      let backButtonImage = UIImage(named: "BackButton.png")?.withRenderingMode(.alwaysTemplate) 

      let backButton = UIButton(type: .custom) 
      backButton.setImage(backButtonImage, for: .normal) 
      backButton.tintColor = .white 
      backButton.setTitle(" Back", for: .normal) 
      backButton.setTitleColor(.white, for: .normal) 
      backButton.addTarget(self, action: #selector(self.backAction(_:)), for: .touchUpInside) 

      self.navigationItem.leftBarButtonItem = UIBarButtonItem(customView: backButton) 


} 
संबंधित मुद्दे