2016-08-26 93 views
0

我在我的一些單元格在tableview中添加額外的標籤時遇到問題。此刻,我確定的rowHeight如下:在UITableViewCell中以編程方式添加標籤?

override func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat { 
     let numberOfBusses = nearbyStops[indexPath.section].getDepartures()[indexPath.row]!.count 
     if (numberOfBusses > 2) { 
      return CGFloat((75/2) * numberOfBusses) 
     } else { 
      return 75 
     } 
} 

我嘗試這樣做是爲了添加缺少的標籤,但沒有任何反應:

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 
    let cell = tableView.dequeueReusableCellWithIdentifier("cell", forIndexPath: indexPath) as! BusDepartureTableViewCell 
    let numberOfBusses = nearbyStops[indexPath.section].getDepartures()[indexPath.row]!.count 
      if (numberOfBusses > 2) { 
       var label = UILabel(frame: CGRectMake(0, 0, 200, 21)) 
       label.center = CGPointMake(160, 284) 
       label.textAlignment = NSTextAlignment.Center 
       label.text = "I'am a test label" 
       label.textColor = UIColor.redColor() 
       cell.foregroundView.addSubview(label) 
      } 


......... 

我在做什麼錯?

UPDATE:

我已經採取了我目前的成就的圖片,我已經得到了,不過細胞擴展,你可以看到,現在有空間供其他兩個標籤,但我怎麼加他們?

enter image description here

+1

我不會在一個UITableViewCell因爲細胞被重新使用添加這樣的一個自定義的UIView。檢查'cell.foregroudView'和'label'的框架。 – Larme

+0

你會怎麼做?我有點迷失在如何去做不同。 – Recusiwe

+1

我會把'BusDepartureTableViewCell'(xib)的視圖,並在必要時隱藏它。 – Larme

回答

0

細胞獲得重新「拿來主義」 - 這意味着,以節省內存的iOS使用您的UI元素科技只是作爲一個佔位符,並設置自己的價值觀

cellForRowAtIndexPath 

在這種情況下,它多在故事板中創建2個(或更多)不同的單元格佈局的更高內存效率,併爲每個單元格提供不同的標識符。

例如:

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 

    let item = yourPopulatingArray[indexPath.row] as Item 

    var cellIdentifier = "cellLayout1" 

    if item.anyPropertyToCheckforLayout { 
     cellIdentifier = "cellLayout2" 
    } 

    let cell = tableView.dequeueReusableCellWithIdentifier(cellIdentifier, forIndexPath: indexPath) as! BusDepartureTableViewCell 
+0

哦,我明白了,所以你只需要有幾個不同的調用佈局。所以我只是在我的if語句中交換cellIndentifiers? – Recusiwe

+0

是的,這是做這種事情的最佳方式 – derdida

+0

你會在.xib或?我只是習慣使用故事板。 – Recusiwe

相關問題