extension HomeViewController: UISearchBarDelegate {
func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String) {
//code
}
func searchBarCancelButtonClicked(_ searchBar: UISearchBar) {
//code
}
}当它在我的HomeViewController底部的时候,它运行得很好。
我想知道我能不能把这个扩展名分开在单独的文件里?
发布于 2020-01-31 08:48:16
我忘了包括UIKit。
import Foundation
import UIKit
extension HomeViewController {
func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String) {
//code
}
func searchBarCancelButtonClicked(_ searchBar: UISearchBar) {
//code
}
}另外,您需要在UISearchBarDelegate中继承ViewController,而不是在扩展中。
发布于 2020-01-31 10:05:45
是有可能的.
希望你知道延展在斯威夫特。
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
}
}我希望这能帮到你。
谢谢
发布于 2020-01-31 09:00:09
你可以像下面这样实现这一点。
viewDidLoad(){
let searchBar = UISearchBar()
searchBar.delegate = DelegateFile()
}创建一个文件。
class DelegateFile: NSObject, UISearchBarDelegate{
func searchBarTextDidEndEditing(_ searchBar: UISearchBar) {
//
}
}然后在单独的文件中实现委托方法。
https://stackoverflow.com/questions/60000447
复制相似问题