2016-07-06 66 views
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).") 
    } 

任何指導,將不勝感激:)

iOS Calendar

回答

0

它應該是這個樣子這個:

tableView.registerClass(CustomCellClass.self, forCellReuseIdentifier: "CustomCellClasId") 

然後:

internal func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 
    if let cell = tableView.dequeueReusableCellWithIdentifier("CustomCellClassId", forIndexPath: indexPath) as? CustomCellClass{ 
      // set up cell 
      return cell 
     } 
} 
+0

@sukh這個答案是你如何使用您的自定義單元格類 - 無論是程序執行還是廈門國際銀行是你的,但在我的經驗,多數人覺得xibs更容易設計。 – bradkratky

+0

Thanks @ andrew-mckinley and @bradkratky - 爲了讓我得到這個工作,我不得不刪除'registerClass'這一行 - 是嗎?如果需要,我可以添加進一步的細節......基本上,我用相應的XIB文件創建了一個新的子類「UITableViewCell」。更改了重用標識符並修改了'cellForRowAtIndexPath'方法來檢查單元是否爲零。如果它是零,我使用下面的行:'tableView.registerNib(UINib(nibName:「RoomDetailTableViewCell」,bundle:nil),forCellReuseIdentifier:「roomDetailCell」)'然後基本上再次出隊單元 – sukh

+1

好吧,認爲你可以忽略我愚蠢 - 我發現了另一個重複的StackOverflow後在這裏http://stackoverflow.com/questions/28999400/swift-uitableview-custom-cell-programatically-documentation-只會遵循這個:) – sukh

相關問題