我的项目设置是这样的:
我有一个自定义选项卡导航 Controller 。自定义选项卡导航 Controller 的顶部栏是一个文本字段。此文本字段根据应用程序的 4 个主要 View (4 个选项卡按钮)而变化。
我想做的是将文本字段用作搜索栏,方法是将输入到文本字段中的任何内容传递到 searchView 但是,我无法将导航 Controller 中的 textfield.text 传递到 searchView。我在下面有一张图片可以更清楚地说明这一点。
searchView 负责搜索功能。我想做的就是在更改时将 textfieled.text 值传递给 searchView
最佳答案
// global
let handleTextChangeNotification = "handleTextChangeNotification"
你的 FirstViewController
override func viewDidLoad() {
super.viewDidLoad()
textField.addTarget(self, action: #selector(textFieldDidChange(_:)), for: .editingChanged)
}
func textFieldDidChange(textField: UITextField){
NotificationCenter.default.post(name: NSNotification.Name(rawValue: handleTextChangeNotification), object: nil, userInfo: ["text":textField.text])
let search_screen = SearchViewController()
self.navigationController?.pushViewController(search_screen, animated: true)
}
SeacrchViewController 的
override func viewDidLoad() {
super.viewDidLoad()
NotificationCenter.default.addObserver(self,
selector: #selector(SeacrchViewController.handleTextChange(_:)),
name: NSNotification.Name(rawValue: handleTextChangeNotification),
object: nil)
}
func handleTextChange(_ myNot: Notification) {
if let use = myNot.userInfo {
if let text = use["text"] {
// your search with 'text' value
}
}
}
}
关于ios - 在 Swift 3 Xcode 8 中使用文本字段作为搜索栏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43793920/