Как и прежде, вам нужен выход для просмотра таблицы, поскольку вы не используете UITableViewController
@IBOutlet weak var tableView: UITableView!
затем внутри viewDidLoad
установите его делегата и источник данных в качестве контроллера представления
class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource, UISearchBarDelegate {
@IBOutlet weak var tableView: UITableView!
...
override func viewDidLoad() {
super.viewDidLoad()
...
tableView.delegate = self
tableView.dataSource = self
}
...
}
Вы можете иметь два массива. Один для всех пользователей и один для отфильтрованных пользователей по вашим условиям (активен или нет)
var users = [User]()
var filteredUsers: [User] = users /* or just some other default value, e.g empty array */
Этот фильтрованный массив вы можете назначить фильтрованным массивом каждый раз, когда вы нажимаете определенную кнопку, и не забудьте затем перезагрузить данные вашего табличного представления
@IBAction func ActionShowActiveUsers(_ sender: Any) {
filteredUsers = users.filter { $0.active }
tableView.reloadData()
}
@IBAction func btnShowInActiveUser(_ sender: Any) {
filteredUsers = users.filter { !$0.active }
tableView.reloadData()
}
затем в качестве массива источника данных для представления таблицы используйте filteredUsers
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return filteredUsers.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = UITableViewCell()
cell.textLabel?.text = "this cell index for \(filteredUsers[indexPath.row].username)"
return cell
}