Ho creato la classe personalizzata di navigazione e volevo decorarla, ho preso la classe NavDecoration.swift e l'estensione dichiarata che è stata mostrata nel codice sottostante, ho aggiunto anche il codice della barra di ricerca in questa funzione, ho voluto impostare il delegato della barra di ricerca in questo estensione ma il suo dare errore non può assegnare di tipo 'UIViewController' digitare 'UISearchBarDelegateCome impostare un delegato della barra di ricerca di viewController usando l'estensione?
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
}}
ho fatto tutto pronto e quando lo faccio searchBar.delegate = viewController così la sua darmi lo stesso errore non può assegnare di tipo 'UIViewController' digitare 'UISearchBarDelegate – IOSDev
È assegnando UIViewController invece di UINavigationController come delegato. Se la tua estensione è come sopra devi impostare searchBar.delegate = viewController.navigationController. – stefos