0
我試圖構建一個演示應用程序,它看起來非常類似於默認的iOS日曆應用程序。我差不多完成了,但並不完全確定在TableView上應用自定義單元格的最佳做法。以編程方式或XIB實現TableView單元格
查看屏幕截圖(請參閱下文),默認應用程序具有特定日期所有事件的TableView。我應該如何將這種造型應用到我的細胞中?
目前,我有這樣的(基本上叫我viewDidAppear
方法:
- 個月的冠軍作爲一個標誌,在故事板定義 這我編程應用
- 默認
- 日曆包iOS Tableview,它也被編程應用於此之下
因爲TableView是以編程方式應用的,所以我不完全確定要去哪裏。 elow是我的TableView中代碼:
let cellReuseIdentifier = "eventCell"
let offsetY = {% Some fancy calculation here to get offset pos %}
let height = {% Just as above but to determine remaining height %}
tableView.frame = CGRectMake(0, offsetY, screenSize.width, height)
tableView.delegate = self
tableView.dataSource = self
tableView.registerClass(UITableViewCell.self, forCellReuseIdentifier: cellReuseIdentifier)
view.addSubview(tableView)
和具體的數據源方法:
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return selectedEvents.count
}
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
// create a new cell if needed or reuse an old one
let cell = tableView.dequeueReusableCellWithIdentifier(cellReuseIdentifier)!
let event = selectedEvents[indexPath.row]
// set the text from the data model
cell.textLabel?.text = "\(event.startTime) - \(event.endTime) | \(event.summary)"
return cell
}
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
print("You tapped cell number \(indexPath.row).")
}
任何指導,將不勝感激:)
@sukh這個答案是你如何使用您的自定義單元格類 - 無論是程序執行還是廈門國際銀行是你的,但在我的經驗,多數人覺得xibs更容易設計。 – bradkratky
Thanks @ andrew-mckinley and @bradkratky - 爲了讓我得到這個工作,我不得不刪除'registerClass'這一行 - 是嗎?如果需要,我可以添加進一步的細節......基本上,我用相應的XIB文件創建了一個新的子類「UITableViewCell」。更改了重用標識符並修改了'cellForRowAtIndexPath'方法來檢查單元是否爲零。如果它是零,我使用下面的行:'tableView.registerNib(UINib(nibName:「RoomDetailTableViewCell」,bundle:nil),forCellReuseIdentifier:「roomDetailCell」)'然後基本上再次出隊單元 – sukh
好吧,認爲你可以忽略我愚蠢 - 我發現了另一個重複的StackOverflow後在這裏http://stackoverflow.com/questions/28999400/swift-uitableview-custom-cell-programatically-documentation-只會遵循這個:) – sukh