首页 > 解决方案 > 表头内的 Swift UITextField

问题描述

我有一个包含 UITextField 的标题的集合视图(基本上它是一个搜索)。我想在编辑此字段时更新 collectionview 数据。主要问题是调用collectionView.reloadData() 后键盘被关闭。所以我每次重新加载只能输入一个一个字符。我试过用 reloadItems() 替换 reloadData() 但它没有帮助。我怎样才能避免这种情况?我知道我可以在 collectionView 中放置一个搜索字段,但这对我来说不是一个正确的解决方案。(您可以查看 Instagram 搜索关注者)

我做了什么:

searchField.addTarget(self, action: #selector(textFieldChanged), for: .editingChanged)

然后将此数据传递给我的 RestAPI 服务器:

@objc func textFieldChanged(_ textField: UITextField) {
    guard let searchQuery = textField.text else { return }
    if !searchQuery.isEmpty {
        APIService.sharedInstance.searchSubscribers(userId: user.id, token: User.sharedInstance.token, type: segment.selectIndex == 0 ? .followers : .following, query: searchQuery) { (fetchedUsers) in
            DispatchQueue.main.async {
                self.subcribersList = fetchedUsers
                self.collectionView.reloadData()
            }
        }
    } else {
        fetchList(listType: segment.selectIndex == 0 ? .followers : .following, scrollAnimation: false)
    }
}

标签: swiftuitableviewuicollectionviewuitextfield

解决方案


不是确切的解决方案,但作为一个没有故事板的粉丝,我会将文本字段添加为 collectionView 的子视图。并将collectionview插入到顶部作为搜索栏的高度。而不是把它放在标题上。


推荐阅读