2016-05-25 3 views
6

मैंने नेविगेशन कस्टम क्लास बनाया और मैं इसे सजाने के लिए चाहता था, मैंने NavDecoration.swift क्लास लिया और घोषित एक्सटेंशन जो नीचे कोड में दिखाया गया है, मैंने इस फ़ंक्शन में खोज बार कोड भी जोड़ा, मैं इसमें खोज बार प्रतिनिधि सेट करना चाहता था विस्तार लेकिन इसकी दे त्रुटि प्रकार 'UIViewController' टाइप करने के लिए 'UISearchBarDelegateएक्सटेंशन का उपयोग कर कंट्रोलर के खोज बार के प्रतिनिधि को कैसे सेट करें?

extension UINavigationController { 
func makeBlackNavigationbar (viewController: UIViewController, animated: Bool) { 

viewController.navigationController?.navigationBar.backgroundColor? = UIColor.blackColor() 
    let add = UIBarButtonItem(barButtonSystemItem: .Add, target: viewController, action: "addTapped") 
    let play = UIBarButtonItem(title: "Play", style: .Plain, target: viewController, action: "addTapped") 
    viewController.navigationItem.rightBarButtonItems = [add, play] 

    let left = UIBarButtonItem(barButtonSystemItem: .Add, target: viewController, action: "addTapped") 
    viewController.navigationItem.leftBarButtonItems = [left] 

     let searchBar = UISearchBar(frame: CGRectZero) 
     searchBar.placeholder = "Search" 
     searchBar.delegate = viewController 
     viewController.navigationItem.titleView = searchBar 
}} 

उत्तर

1

** मैं का सिर्फ कुछ लाइन को बदलने के द्वारा किया है कोड **

extension UIViewController : UISearchBarDelegate { 

func makeBlackNavigationbar (viewController: UIViewController, animated: Bool) { 

    viewController.navigationController?.navigationBar.backgroundColor? = UIColor.blackColor() 
    let add = UIBarButtonItem(barButtonSystemItem: .Add, target: viewController, action: "addTapped") 
    let play = UIBarButtonItem(title: "Play", style: .Plain, target: viewController, action: "addTapped") 
    viewController.navigationItem.rightBarButtonItems = [add, play] 
    let left = UIBarButtonItem(barButtonSystemItem: .Add, target: viewController, action: "addTapped") 
    viewController.navigationItem.leftBarButtonItems = [left] 

     let searchBar = UISearchBar(frame: CGRectZero) 
     searchBar.placeholder = "Search" 
     searchBar.delegate = viewController 
     viewController.navigationItem.titleView = searchBar 
}} 
2

आप UISearchBarDelegate प्रोटोकॉल के अनुरूप है असाइन नहीं कर सकते:

extension UINavigationController : UISearchBarDelegate { 
    ... 
} 
+0

मैं यह सब तैयार किया है और जब मैं कर searchBar.delegate = ViewController की तरह है कि इसके लिए मुझे दे रही है वही त्रुटि UISearchBarDelegate – IOSDev

+1

टाइप करने के लिए 'तुम प्रतिनिधि के रूप में UINavigationController के बजाय UIViewController बताए प्रकार के' UIViewController 'नहीं सौंप सकते। यदि आपका एक्सटेंशन उपर्युक्त है तो आपको searchBar.delegate = viewController.navigationController सेट करना होगा। – stefos

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