swift 3 - как сильно ударить ячейку просмотра таблицы?
import UIKit
class PartiesTableViewController: UITableViewController
{
let cellIdentifier = "partyCell"
var parties: [Party]?
let persistence = Persistence()
let dateFormatter = DateFormatter()
override func viewDidLoad()
{
super.viewDidLoad()
tableView.register(UITableViewCell.self, forCellReuseIdentifier: cellIdentifier)
dateFormatter.dateStyle = DateFormatter.Style.short
dateFormatter.timeStyle = DateFormatter.Style.short
print("PartiesTableViewController.viewDidLoad() begins")
}
override func viewDidAppear(_ animated: Bool)
{
parties = persistence.fetchParties()
tableView.reloadData()
}
//UITableViewDataSource
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int
{
return parties?.count ?? 0
}
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell
{
print("PartiesTableViewController.tableView() begins")
let cell = tableView.dequeueReusableCell(withIdentifier: cellIdentifier, for: indexPath)
if let parties = parties
{
let party = parties[indexPath.row]
print("partyname = \(party.name) \(party.startDate)")
let strDate = dateFormatter.string(from: party.startDate)
cell.textLabel?.text = "\(party.name) - \(strDate)"
}
return cell
}
//UITableViewDelegate - delete
override func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCellEditingStyle, forRowAt indexPath: IndexPath)
{
if(editingStyle == UITableViewCellEditingStyle.delete)
{
parties.remove(at: indexPath.row)
}
}
}
Я очень новичок в разработке для iOS, и это мой первый проект списка задач. Я пытался провести пальцем удалить данные ячейки таблицы с экрана. Но то, как я это сделал, кажется неправильным. Может ли кто-нибудь помочь мне реализовать метод удаления клеток, пожалуйста? Последняя линия parties.remove(at: indexPath.row)
выдает ошибку:
"Значение типа '[Сторона]?' не имеет члена 'удалить'
2 ответа
Вы должны развернуть parties
необязательный. Вам также придется перезагрузить таблицу после изменения массива сторон.
parties?.remove(at: indexPath.row)
tableView.reloadData()
Для получения дополнительной информации об опциях: https://developer.apple.com/reference/swift/optional
+ Изменить
parties.remove(at: indexPath.row)
в
parties?.remove(at: indexPath.row)