2015-11-15 8 views
15

के साथ प्रोग्रामिंग रूप से नवबार बनाएं, मैं एक नवबार बनाने की कोशिश करता हूं, अब तक नवबार कोई समस्या नहीं है, लेकिन अगर मैं बटन जोड़ने और शीर्षक को जोड़ने का प्रयास करता हूं तो मुझे चूसा जाता है।बटन और शीर्षक स्विफ्ट

तरह

let NameHeight = screenHeight * 0.09 
let NameWidth = screenWidth 
let navBar: UINavigationBar = UINavigationBar(frame: CGRect(x: 0, y: 0, width: NameWidth, height: NameHeight)) 
self.view.addSubview(navBar) 

मेरे NavBar देखो तो मैं जैसे

navigationBar.topItem.title = "some title" 
or 
navigationBar.title = "some title" 

लेकिन दोनों असफल मेरी NavBar शीर्षक सेट करने का प्रयास।
इसके अलावा, अगर मैं एक बटन सेट करने का प्रयास

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 

इस मुझे एक त्रुटि नहीं है, लेकिन बटन बस

उत्तर

26

आप एक नेविगेशन आइटम उदाहरण बनाना होगा प्रदर्शित नहीं किया जाता और शीर्षक और दाएँ/बाएँ बटन सेट इसके लिए नेविगेशन आइटम कॉन्फ़िगर करने के बाद इसे नेविगेशन बार में जोड़ें।

let navBar: UINavigationBar = UINavigationBar(frame: CGRect(x: 0, y: 0, width: 320, height: 44)) 
self.view.addSubview(navBar); 
let navItem = UINavigationItem(title: "SomeTitle"); 
let doneItem = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.Done, target: nil, action: "selector"); 
navItem.rightBarButtonItem = doneItem; 
navBar.setItems([navItem], animated: false); 
+0

धन्यवाद में Azimov का जवाब यह पहले से ही :-) काम करते हैं लेकिन अभी भी "कस्टम छवि सेट" मेरे लिए विफल रहता है क्या आप मुझे इस पर एक संकेत दे सकता है? –

+0

जाने doneItem = UIBarButtonItem (छवि: Image1, landscapeImagePhone: शून्य, शैली: UIBarButtonItemStyle.Plain, लक्ष्य: शून्य, कार्रवाई: "Action1:") इसे हल किया –

+0

नेविगेशन पट्टी चौड़ाई के लिए रूट दृश्य –

14

मूल रूप से स्विफ्ट 4

override func viewDidLoad() { 
    super.viewDidLoad() 
    self.setNavigationBar() 
} 

func setNavigationBar() { 
    let screenSize: CGRect = UIScreen.main.bounds 
    let navBar = UINavigationBar(frame: CGRect(x: 0, y: 0, width: screenSize.width, height: 44)) 
    let navItem = UINavigationItem(title: "") 
    let doneItem = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.done, target: nil, action: #selector(done)) 
    navItem.rightBarButtonItem = doneItem 
    navBar.setItems([navItem], animated: false) 
    self.view.addSubview(navBar) 
} 

@objc func done() { // remove @objc for Swift 3 

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