2017-01-27 17 views
-4

У меня есть ViewController, в котором у меня есть 2 TextFields и один вид DatePicker, когда я нажимаю кнопку Сохранить. Я хочу использовать дату, которую я выбрал, в качестве заголовка моего TableviewController. Если другие объекты следуют, и они имеют одну и ту же дату, они должны группироваться вместе в ту же дату. Я не использую CoreData в этом проекте, поэтому, пожалуйста, не предлагайте использовать метод, который CoreData предоставляет для этой задачи. enter image description hereUITableViewCell Separator с использованием даты

+3

пожалуйста, добавьте код, выделяя проблему ваш имеющий. – torinpitchers

ответ

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 
    } 
}