मैंने नेविगेशन कस्टम क्लास बनाया और मैं इसे सजाने के लिए चाहता था, मैंने 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
}}
मैं यह सब तैयार किया है और जब मैं कर searchBar.delegate = ViewController की तरह है कि इसके लिए मुझे दे रही है वही त्रुटि UISearchBarDelegate – IOSDev
टाइप करने के लिए 'तुम प्रतिनिधि के रूप में UINavigationController के बजाय UIViewController बताए प्रकार के' UIViewController 'नहीं सौंप सकते। यदि आपका एक्सटेंशन उपर्युक्त है तो आपको searchBar.delegate = viewController.navigationController सेट करना होगा। – stefos