gpt4 book ai didi

swift - UISearchBar.value for key 在 swift 中做什么?

转载 作者:行者123 更新时间:2023-12-04 12:58:10 24 4
gpt4 key购买 nike

在 swift 中使用 UITableView 和 UISearchBar 时,我试图找到一种方法来保持搜索栏上的取消按钮在用户搜索内容然后在表格 View 中滚动时保持启用状态,因此他们不必单击两次来取消搜索。退出第一响应者(或结束搜索栏上的编辑)的默认行为将使取消按钮变灰,但我想保持启用它,所以在 Stackoverflow 上我找到了如何做到这一点,但我找不到答案在线至于什么searchBar.value(forKey: "cancelButton")在下面的代码中。显然,它以某种方式创建了对搜索栏上取消按钮的引用,但我不明白 .value 的作用(因为我是 swift 的新手),以及“cancelButton”键的来源。我已阅读 func value(forKey key: String)文档,但我仍然不明白。如果有人能解释这是做什么的,那就太好了。

func scrollViewWillBeginDragging(_ scrollView: UIScrollView) {
searchBar.resignFirstResponder()
// If the user scrolls, keep the cancel button enabled
if let cancelButton = searchBar.value(forKey: "cancelButton") as? UIButton { // <-- This line
if searchBar.text != "" { cancelButton.isEnabled = true }
else { searchBar.showsCancelButton = false }
}
}
提前致谢。

最佳答案

UISearchBar是一个子类UIView -> UIResponder -> NSObject以及所有 NSObject s 符合 NSKeyValueCoding Protocol Reference valueForKey:是一种 KVC 方法。它适用于任何 NSObject class 和任何其他符合上述协议(protocol)的东西。 valueForKey:允许您使用字符串作为名称来访问属性。例如,如果我有一个 Account具有属性的类 number ,我可以执行以下操作:

let myAccount = Account(number: 12)
myAccount.value(forKey: "number")
由于它是运行时检查,因此无法确定返回类型是什么。所以你必须像这样手动转换它:
let number = myAccount.value(forKey: "number") as? Int
我不打算在这里解释沮丧和可选
所以你可以访问 任何 符合 NSKeyValueCoding 的对象的属性只需知道其方法的确切名称(可以通过简单的逆向工程轻松找到)。
另外,还有一个类似的方法叫做 performSelector可以让你执行对象的任何功能
⚠️ 但请注意,如果您触摸系统的私有(private)变量或函数,Apple 将拒绝您的应用程序。 (如果他们发现了!)
⚠️另外,请注意,其中任何一个都可以在没有通知的情况下重命名,并且您的应用程序将面临未定义的行为。

关于swift - UISearchBar.value for key 在 swift 中做什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63419081/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com