2016-11-14 10 views
0

を使用して行ヘッダーを作成します。私はトップレベルで文字列 の配列の配列を有するテーブルビュースウィフト

Array = [[November 1 2016], [November 2 2016], [November 3 2016, ..., [Current Date]] 

アレイで【2016年11月1日]、それは文字列[timeOne、timeTwo、timeThreeを含んでいます。 ..]。同様の文字列が配列[2016年11月2日]の下に現れます。

目標は、トップレベルの配列に表示されている日付を示す行(たとえば、「November 1 2016」)を持つ表を作成することです。そしてその一番上の行の下に、個々のセル内のその矢印からすべての値(timeOne、timeTwoなど)があります。例えば

Row 1 = November 1 2016 
Row 2 = timeOne 
Row 3 = timeTwo 
Row 4 = timeThree 
Row 5 = November 2 2016 

について私が「... timeOne、timeTwo、timeThree」の配列を作成する機能を有しており、私は、適切な配列にそれを追加することができます。 配列内に配列を作成する私の問題は、毎日複数のtimeValuesが取られることです。 アプリを使用する毎日一度だけ日付を記録し、この日の新しい配列を作成するにはどうすればいいですか? (たとえば11月3日に開かれないアプリケーションの場合、配列には11月2日、11月4日が含まれます。しかし、11月3日をスキップします。

本質的には、このように見えますが、それは午前7:00を言う場合は、午前8時などは、私のtimeOneとtimeTwoなり、それぞれ

このついて行くのが良い方法ですか? End goal from UI tableview

答えて

1

最良の方法は、UITableViewsections機能を利用することですあなたのケースでは、それぞれの日付はそれ自身のセクションであり、その後の時間は行です。

時代を

tableView(tableView: UITableView, viewForHeaderInSection: Int) -> UIView? { 
    let label = UILabel(frame: CGRectMake(0, 0, tableView.frame.width, 20)) 
    label.text = dates[section] // Would set to the date in the array. 
} 

その後反復cellForRowAtIndexPathにし、それらを表示する:

は、たとえば次のような何かを行うことができます。

私が何かを詳述する必要がある場合は、ちょうど言う。

EDIT:

非常に粗製の実装は明らかにあなたは、日付と時刻の配列の値を移入する必要があります、少しのようになります。

class Time { 
    var timeString: String! 
    var eventString: String! 
} 

class Date { 
    var dateString: String! 
    var times: [Time]! 
} 

class ViewController: UIViewController, UITableViewDataSource, UITableViewDelegate { 

    var dates = [Date]() 

    func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 
     let cell = UITableViewCell() 
     cell.textLabel?.text = dates[indexPath.section].times[indexPath.row].timeString 
     return cell 
    } 

    func numberOfSectionsInTableView(tableView: UITableView) -> Int { 
     return dates.count 
    } 

    func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 
     return dates[section].times.count 
    } 

    func tableView(tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? { 
     let label = UILabel(frame: CGRectMake(0, 0, tableView.frame.width, 20)) 
     label.text = dates[section].dateString 
     return label 
    } 
} 
+0

ありがとう、ジェイコブ、私はこれが私の後ろだと思います。しかし、私は各timeValueを作成しています。私はまた、日付を作成しています。 1つのセクションヘッダーに対応する1日に複数のtimeValuesを取得するにはどうすればよいですか。そして、以下の値が取られた日に、各セクションのヘッダーを動的に更新する方法。 – Lucas

+0

改訂版の回答を参照してください。 –