2015-06-30 40 views
4

說我有節的列表/數組:編程方式增加部分和細胞表視圖斯威夫特

let sections = [new Section("today", todaylist), 
       new Section("yesterday", yestlist), 
       new Section("25th February", list25f),...] 

正如你可以看到每節一節的名稱和對象的列表,將填充內部的細胞該特定部分。

現在,讓我們假設這些對象只是簡單的字符串。

我將如何以編程方式遍歷sections並使用適當的標題和適當數目的單元格創建新的部分。

I.e-節號的單元數。我應該是:

sections[i].getList().count 
在「今天」,這將是相當於

todaylist.count 

我不能在故事板添加的部分,因爲它會改變的情況下

,表視圖會動態!

感謝您的幫助!

+0

檢查此http://blog.adambardon.com/tableview-with-many-sections-and-items-from-array/ –

回答

14

檢查出這個代碼:

import UIKit 

class TableViewController: UITableViewController { 

    var names = ["Vegetables": ["Tomato", "Potato", "Lettuce"], "Fruits": ["Apple", "Banana"]] 

    struct Objects { 

     var sectionName : String! 
     var sectionObjects : [String]! 
    } 

    var objectArray = [Objects]() 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     for (key, value) in names { 
      println("\(key) -> \(value)") 
      objectArray.append(Objects(sectionName: key, sectionObjects: value)) 
     } 
    } 

    // MARK: - Table view data source 

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

    override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 
     return objectArray[section].sectionObjects.count 
    } 


    override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 
     let cell = tableView.dequeueReusableCellWithIdentifier("cell", forIndexPath: indexPath) as! UITableViewCell 

     // Configure the cell... 
     cell.textLabel?.text = objectArray[indexPath.section].sectionObjects[indexPath.row] 
     return cell 
    } 

    override func tableView(tableView: UITableView, titleForHeaderInSection section: Int) -> String? { 

     return objectArray[section].sectionName 
    } 
} 

希望它能幫助你。

引用自我的old解答。

+0

非常感謝,非常易於理解的代碼。在tableView.dequeueReusableCellWithIdentifier(「cell」,forIndexPath:indexPath)行中有一個問題,我只是在故事板中創建一個ID =「cell」的原型單元格嗎? –

+0

因爲這似乎給我一個錯誤,這是我能想到的所有 –

+0

單擊您的單元轉到屬性檢查器並添加標識符作爲單元格。 –

0

你可以通過使用字典來做到這一點,因爲你只處理字符串,它可能很簡單。

例如。

let sections : [String: [String]] = [ 
    "Today": ["list1", "list2", "list3"], 
    "Yesterday": ["list3", "list4", "list5"] 
    // and continue 
] 

和部分使用:

override func numberOfSectionsInTableView(tableView: UITableView) -> Int { 

    return sections.count 
} 

的部分細胞內的號碼,你可以創建章節標題

let days = ["Today", "Yesterday", "SomeOtherDays"] 

和numberOfRowsInSection另一個數組:

override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 

    let dayKey = days[section] 

    if let daylist = sections[dayKey] { 
     return daylist.count 
    } else { 
     return 0 
    } 
} 
相關問題