Я хочу отсортировать ячейки таблицы, нажав кнопку. То, что у меня сейчас есть, сейчас не работает. При нажатии на кнопку эффекта нет. Я просто хочу, чтобы когда пользователь нажимал func sortA, таблица следовала алгоритму сортировки. Я не обнаружил ошибок при запуске этого кода.
var itemName2 : [NSManagedObject] = []
@objc func sortA(sender: UIButton){
let appD = UIApplication.shared.delegate as! AppDelegate
let context = appD.persistentContainer.viewContext
//check with Golf App
let fetchRequest = NSFetchRequest<NSManagedObject>(entityName: "Data")
fetchRequest.sortDescriptors = [NSSortDescriptor(key: "hits", ascending: true),NSSortDescriptor(key: "atBATS", ascending: true)]
do {
itemName2 = try context.fetch(fetchRequest)
self.theScores.reloadData()
}catch {
print("Ashley Tisdale")
}
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let title = itemName[indexPath.row]
let cell = theScores.dequeueReusableCell(withIdentifier: "MyCell", for : indexPath)
cell.textLabel!.numberOfLines = 2
cell.selectionStyle = .default
cell.textLabel?.textAlignment = .center
cell.layoutMargins = UIEdgeInsets.zero
cell.preservesSuperviewLayoutMargins = false
cell.separatorInset = UIEdgeInsets.zero
cell.layoutMargins = UIEdgeInsets.zero
let attr1 = title.value(forKey: "a") as? String
let attr2 = title.value(forKey: "b") as? String
let text = [" ",attr2," : ", attr1].compactMap { $0 }.reduce("", +)
cell.textLabel?.text = "Game \(indexPath.row+1) \(text)"
return cell
}
override func viewDidLoad() {
super.viewDidLoad()
sort.addTarget(self, action:#selector(sortA), for: .touchDown)
}
отсортировать вашу кнопку? также селектор, который вы добавляете к цели «сортировки», не имеет никаких параметров, измените «func sortA (отправитель: UIButton)» на «func sortA ()». Я бы также использовал touchUpInside вместо touchDown.
itemName
иitemName2
очень похожи, но все же разные.