我試圖做一個自定義單元格是我的細胞的部分:我重寫了一些功能,如動態viewForHeaderInSection和多重的cellForRowAtIndexPath
對於這一點:
numberOfRowsInSection
viewForHeaderInSection
HEIGH tForHeaderInSection
我正與多個cellForRowAtIndexPath
工作我使用一個if indexPath.row
識別Cell
並以動態的方式進行填充。
import UIKit
class TesteTableViewController: PFQueryTableViewController {
override func preferredStatusBarStyle() -> UIStatusBarStyle {
return UIStatusBarStyle.LightContent
}
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
loadCollectionViewData()
}
func loadCollectionViewData() {
// Build a parse query object
let query = PFQuery(className:"Feed")
// Check to see if there is a search term
// Fetch data from the parse platform
query.findObjectsInBackgroundWithBlock {
(objects: [PFObject]?, error: NSError?) -> Void in
// The find succeeded now rocess the found objects into the countries array
if error == nil {
print(objects!.count)
// reload our data into the collection view
} else {
// Log details of the failure
}
}
}
override func numberOfSectionsInTableView(tableView: UITableView) -> Int {
// #warning Incomplete implementation, return the number of sections
return objects!.count
}
override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 1
}
override func tableView(tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
var header = tableView.dequeueReusableCellWithIdentifier("Cell2")! as! TesteTableViewCell
return header
}
override func tableView(tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
return 30.0
}
// Initialise the PFQueryTable tableview
override init(style: UITableViewStyle, className: String!) {
super.init(style: style, className: className)
}
required init(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)!
// Configure the PFQueryTableView
self.parseClassName = "Feed"
self.pullToRefreshEnabled = true
self.paginationEnabled = false
}
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
var cell: TesteTableViewCell!
let object = objects![indexPath.section]
if indexPath.row == 0 {
cell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath) as! TesteTableViewCell
// Extract values from the PFObject to display in the table cell
if let nameEnglish = object["name"] as? String {
cell?.label1?.text = nameEnglish
}
}
else{
cell = tableView.dequeueReusableCellWithIdentifier("Cell2", forIndexPath: indexPath) as! TesteTableViewCell
// Extract values 2from the PFObject to display in the table cell
if let nameEnglish2 = object["brief"] as? String {
cell?.label2?.text = nameEnglish2
}
}
return cell
}
}
我的代碼我有這樣的結果:
我成功地填充不同的標識符兩個單元。
但是看起來這個函數在cellForRowAtIndexPath
之前調用,它返回我在storyBoard中的內容,而不是我動態填充的內容。
override func tableView(tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
var header = tableView.dequeueReusableCellWithIdentifier("Cell2")! as! TesteTableViewCell
return header
}
我真的認爲這是我的問題。 (事情發生的順序)。
任何想法?
謝謝。
如果你想實現代碼如下刷新自己你得到後的數據,有tableview中調用reloadData,說像'self.tableView.reloadData()'但在你的代碼中的其他東西,不要」對我來說沒有意義。您在評論中似乎有很多內容尚未實現。您只爲每個部分返回1行。那是故意的嗎? – beyowulf
我使用'loadObjects()'而不是'self.tableView.reloadData()',因爲我使用的是Parse框架,它沒有解決問題,是的,這是故意的,因爲我想模擬Instagram的feed功能 –
loadObjects()獲取數據。 self.tableView.reloadData()告訴tableView有新的數據要顯示,並且它應該自己更新。您應該查找關於如何使用uitableview的教程。你的問題太寬泛,不能在一個計算器問題中討論。 – beyowulf