Возможно ли иметь расширение UISearchBarDelegate в отдельном файле? - PullRequest
1 голос
/ 31 января 2020
extension HomeViewController: UISearchBarDelegate {


    func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String) {
        //code
    }

    func searchBarCancelButtonClicked(_ searchBar: UISearchBar) {
         //code     
    }
}

Это работало нормально, когда оно находилось внизу моего HomeViewController.
Интересно, можно ли разделить это расширение в отдельном файле?

Ответы [ 3 ]

1 голос
/ 31 января 2020

Да, это возможно.

Надеюсь, вы знаете о расширение в быстром.

Extensions - полезная функция, которая помогает в добавлении больше функциональных возможностей для существующего типа Class, Structure, Enumeration или Protocol. Это включает в себя добавление функций для типов, для которых у вас нет исходного исходного кода.

Код:

class HomeVC: UIViewController {

    var searchBar = UISearchBar()

    override func viewDidLoad() {
        super.viewDidLoad()
        self.searchBar.delegate = self   
    }
}

создайте еще один файл с именем HomeVC+SearchBarDelegate

import Foundation
import UIKit

extension HomeVC: UISearchBarDelegate {

    func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String) {
        //code
    }

    func searchBarCancelButtonClicked(_ searchBar: UISearchBar) {
         //code
    }
}

Надеюсь, это поможет вам.

Спасибо

0 голосов
/ 31 января 2020

Вы можете достичь этого, как показано ниже.

viewDidLoad(){
  let searchBar = UISearchBar()
  searchBar.delegate = DelegateFile()
}

создать файл.

class DelegateFile: NSObject, UISearchBarDelegate{
    func searchBarTextDidEndEditing(_ searchBar: UISearchBar) {
        //
    }
}

Затем реализовать методы делегата в отдельном файле.

0 голосов
/ 31 января 2020

Я забыл включить UIKit.

import Foundation
import UIKit

extension HomeViewController {
    func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String)        {
      //code
    }

    func searchBarCancelButtonClicked(_ searchBar: UISearchBar) {
     //code
    } 
}

Кроме того, вам нужно наследовать UISearchBarDelegate в ViewController, а не в расширении.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...