У меня есть ViewController, в котором у меня есть 2 TextFields и один вид DatePicker, когда я нажимаю кнопку Сохранить. Я хочу использовать дату, которую я выбрал, в качестве заголовка моего TableviewController. Если другие объекты следуют, и они имеют одну и ту же дату, они должны группироваться вместе в ту же дату. Я не использую CoreData в этом проекте, поэтому, пожалуйста, не предлагайте использовать метод, который CoreData предоставляет для этой задачи. enter image description hereUITableViewCell Separator с использованием даты
-4
A
ответ
0
Вот простая реализация, которая принимает ваши таблицы и поддерживает список уникальных дат, которые будут использоваться в качестве заголовков разделов. В этом примере я воссоздаю заголовки с нуля, но в реальной реализации вы можете захотеть обновить их.
я определил-структуру для моих выборочных данных
struct SampleData
{
var date = Date()
var textField1 = ""
var textField2 = ""
}
и создал некоторые данные
var tableData : [SampleData] = []
var tableDataSectionHeaderData : [Date] = []
override func viewDidLoad()
{
super.viewDidLoad()
tableData.append(SampleData(date: stringAsDate("Feb 13, 2017")!, textField1: "Title 1", textField2: "text2"))
tableData.append(SampleData(date: stringAsDate("Feb 13, 2017")!, textField1: "Title 2", textField2: "text2"))
tableData.append(SampleData(date: stringAsDate("Feb 14, 2017")!, textField1: "Title 3", textField2: "text2"))
// and so on...
createSectionHeaders()
}
func createSectionHeaders()
{
tableDataSectionHeaderData.removeAll() // in a realistic scenario, you would probably update this rather than recreating from scratch
for entry in tableData
{
if !tableDataSectionHeaderData.contains(entry.date)
{
tableDataSectionHeaderData.append(entry.date)
}
}
}
У меня есть несколько функций, определенных для переключения между Датой и String.
вот как реализовать методы Tableview
extension ViewController : UITableViewDelegate, UITableViewDataSource
{
func numberOfSections(in tableView: UITableView) -> Int
{
return tableDataSectionHeaderData.count
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int
{
let filteredData = tableData.filter{$0.date == tableDataSectionHeaderData[section]}
return filteredData.count
}
func tableView(_ tableView: UITableView, titleForHeaderInSection section: Int) -> String?
{
return dateAsString(tableDataSectionHeaderData[section])
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell
{
let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath)
let filteredData = tableData.filter{$0.date == tableDataSectionHeaderData[indexPath.section]}
cell.textLabel?.text = "\(dateAsString(filteredData[indexPath.row].date)) \(filteredData[indexPath.row].textField1)"
return cell
}
}
пожалуйста, добавьте код, выделяя проблему ваш имеющий. – torinpitchers