gpt4 book ai didi

ios - 当搜索栏成为第一响应者时更改表 - swift

转载 作者:行者123 更新时间:2023-11-28 15:27:34 25 4
gpt4 key购买 nike

您好,当搜索栏成为第一响应者时,我正在尝试更改表格中的单元格。理想情况下,我希望我的添加好友表最初显示好友请求,当搜索栏成为第一响应者时,它将更改单元格以显示搜索栏中输入内容的搜索结果。这是我当前的代码:

class UserFriendRequestController: UIViewController, UITableViewDelegate, UITableViewDataSource, UISearchBarDelegate {

let titleCell = "titleCell"
let cellId = "cellId"
let contactSearch = "contactSearch"
var searchBar = UISearchBar()
var addFriendsTable: UITableView = UITableView()
let users = NSMutableArray()

override func viewDidLoad() {
super.viewDidLoad()

view.addSubview(addFriendsTable)

let img = UIImage(named: "white-screen")
self.navigationController?.navigationBar.shadowImage = img
self.navigationController?.navigationBar.setBackgroundImage(img, for: UIBarMetrics.default)

navigationItem.title = "Add Contact"
self.navigationController?.navigationBar.titleTextAttributes = [ NSFontAttributeName: UIFont(name: "Nunito", size: 18.5)!, NSForegroundColorAttributeName: UIColor(r: 86, g: 214, b: 209)]

addFriendsTable.frame = CGRect(x: 0, y: 0, width: UIScreen.main.bounds.width, height: UIScreen.main.bounds.height - (70))
addFriendsTable.delegate = self
addFriendsTable.dataSource = self
searchBar.sizeToFit()
searchBar.searchBarStyle = .minimal
searchBar.placeholder = "Search Conctacts"
searchBar.showsCancelButton = true
searchBar.delegate = self
addFriendsTable.tableHeaderView = searchBar
addFriendsTable.contentOffset = CGPoint(x: 0.0, y: 0.0)

UIBarButtonItem.appearance(whenContainedInInstancesOf: [UISearchBar.self]).setTitleTextAttributes([NSFontAttributeName : UIFont(name: "Nunito", size: 15)!, NSForegroundColorAttributeName : UIColor(r: 78, g: 78, b: 78)
], for: .normal)

var image = UIImage(named: "back_button_thick")
image = image?.withRenderingMode(UIImageRenderingMode.alwaysOriginal)
navigationItem.leftBarButtonItem = UIBarButtonItem(image: image, style: .plain, target: self, action: #selector(handleBack))

addFriendsTable.register(UserFriendRequestsCell.self, forCellReuseIdentifier: cellId)
addFriendsTable.register(FriendRequestsTitleCell.self, forCellReuseIdentifier: titleCell)
addFriendsTable.register(AddFriendRequestCell.self, forCellReuseIdentifier: contactSearch)
addFriendsTable.separatorColor = UIColor(r: 225, g: 225, b: 225)

setup()
}

func setup() {
for i in 1 ..< 20 {
let user = User()
users.add(user)
}
}


func searchBarCancelButtonClicked(_ searchBar: UISearchBar) {
searchBar.text = nil
searchBar.resignFirstResponder()
}

func handleBack() {
dismiss(animated: true, completion: nil)
}


func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 10
}

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

if self.searchBar.isFirstResponder {
let cell = tableView.dequeueReusableCell(withIdentifier: contactSearch, for: indexPath) as! AddFriendRequestCell
cell.selectionStyle = UITableViewCellSelectionStyle.none
cell.textLabel?.text = "Instagram User Name"
cell.textLabel?.font = UIFont(name: "Nunito", size: 16)
cell.textLabel?.textColor = UIColor(r: 51, g: 51, b: 51)
cell.detailTextLabel?.text = "Instagram Handle"
cell.detailTextLabel?.font = UIFont(name: "Nunito", size: 13)
cell.detailTextLabel?.textColor = UIColor.darkGray
cell.profileImageView.image = UIImage(named: "profilepic")
cell.separatorInset.left = CGFloat(55)
cell.separatorInset.right = CGFloat(5)
let user = users[indexPath.row] as! User
cell.configure(user: user)
return cell
} else {
if indexPath.row == 0 {

let cell = tableView.dequeueReusableCell(withIdentifier: titleCell, for: indexPath) as! FriendRequestsTitleCell
cell.selectionStyle = UITableViewCellSelectionStyle.none
return cell

} else {
let cell = tableView.dequeueReusableCell(withIdentifier: cellId, for: indexPath) as! UserFriendRequestsCell
cell.selectionStyle = UITableViewCellSelectionStyle.none
cell.textLabel?.text = "Instagram User Name"
cell.textLabel?.font = UIFont(name: "Nunito", size: 16)
cell.textLabel?.textColor = UIColor(r: 51, g: 51, b: 51)
cell.detailTextLabel?.text = "Instagram Handle"
cell.detailTextLabel?.font = UIFont(name: "Nunito", size: 13)
cell.detailTextLabel?.textColor = UIColor.darkGray
cell.profileImageView.image = UIImage(named: "profilepic")
cell.separatorInset.left = CGFloat(55)
cell.separatorInset.right = CGFloat(5)

return cell
}
}
}

func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat{

if self.searchBar.isFirstResponder {
return 55
}

else {
if indexPath.row == 0 {
return 30
} else {
return 55
}
}
}
}

最佳答案

为此,我建议查看 UISearchBarDelegate 中的其他方法,特别是 searchBarTextDidBeginEditing()searchBarTextDidEndEditing()。在每个委托(delegate)方法中,您都可以调用 [self.tableView reloadData] 来更新所有单元格。

此外,另一种实现 FriendRequestsTitleCell 的方法是将自定义标题 View 添加到您的表格 View ,因为您使用的单元格只会出现在表格 View 的顶部。

关于ios - 当搜索栏成为第一响应者时更改表 - swift,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45023850/

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