是否可以在单独的文件中使用 UISearchBarDelegate 扩展名?
Is it possible to have UISearchBarDelegate extension in separate file?
extension HomeViewController: UISearchBarDelegate {
func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String) {
//code
}
func searchBarCancelButtonClicked(_ searchBar: UISearchBar) {
//code
}
}
当它位于我的 HomeViewController 的底部时,它工作正常。
我想知道我是否可以将这个扩展分开在单独的文件中?
我忘了包含 UIKit。
import Foundation
import UIKit
extension HomeViewController {
func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String) {
//code
}
func searchBarCancelButtonClicked(_ searchBar: UISearchBar) {
//code
}
}
此外,您需要在 ViewController 中继承 UISearchBarDelegate,而不是在扩展中。
您可以像下面这样实现。
viewDidLoad(){
let searchBar = UISearchBar()
searchBar.delegate = DelegateFile()
}
create a file.
class DelegateFile: NSObject, UISearchBarDelegate{
func searchBarTextDidEndEditing(_ searchBar: UISearchBar) {
//
}
}
然后在单独的文件中实现您的委托方法。
是的,这是可能的。
希望您了解 swift 中的 extention。
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
}
}
希望对您有所帮助。
谢谢
extension HomeViewController: UISearchBarDelegate {
func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String) {
//code
}
func searchBarCancelButtonClicked(_ searchBar: UISearchBar) {
//code
}
}
当它位于我的 HomeViewController 的底部时,它工作正常。
我想知道我是否可以将这个扩展分开在单独的文件中?
我忘了包含 UIKit。
import Foundation
import UIKit
extension HomeViewController {
func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String) {
//code
}
func searchBarCancelButtonClicked(_ searchBar: UISearchBar) {
//code
}
}
此外,您需要在 ViewController 中继承 UISearchBarDelegate,而不是在扩展中。
您可以像下面这样实现。
viewDidLoad(){
let searchBar = UISearchBar()
searchBar.delegate = DelegateFile()
}
create a file.
class DelegateFile: NSObject, UISearchBarDelegate{
func searchBarTextDidEndEditing(_ searchBar: UISearchBar) {
//
}
}
然后在单独的文件中实现您的委托方法。
是的,这是可能的。
希望您了解 swift 中的 extention。
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
}
}
希望对您有所帮助。
谢谢