簡體   English   中英

uitableview高度不會在迅速的ios中動態變化嗎?

[英]uitableview height does not change dynamically in swift ios?

我很麻煩。我有一個城市列表,我想在UITableView顯示城市,並且由於我不想顯示滾動而禁用了UITableView的滾動。

當我動態更改為UITableView的高度時,它沒有更改,並且UITableView不會顯示所有城市。 代碼下方。 請看看。

import UIKit

class FlightDetailsOneWayViewController: UIViewController {

var flightDetailArr:[FlightDetailsOneWay]  =  [FlightDetailsOneWay]()

@IBOutlet var tableView: UITableView!

@IBOutlet var scrollview: UIScrollView!

override func viewDidLoad() {
    super.viewDidLoad()

    flightDetailArr.append(FlightDetailsOneWay(depCity: "London"))

    flightDetailArr.append(FlightDetailsOneWay(depCity: "China"))

    flightDetailArr.append(FlightDetailsOneWay(depCity: "Singapore"))

    flightDetailArr.append(FlightDetailsOneWay(depCity: "Dubai"))


    self.tableView.scrollEnabled = false

    var cellHeight  = CGFloat(self.tableView.rowHeight)

    var totalCity   = CGFloat(flightDetailArr.count)

    var totalHeight = cellHeight * totalCity

    self.tableView.frame.size.height = CGFloat(totalHeight)


}

  override func didReceiveMemoryWarning() {
       super.didReceiveMemoryWarning()
      // Dispose of any resources that can be recreated.
   }


   func tableView(tableView: UITableView!, numberOfRowsInSection section: Int) -> Int   {
       return flightDetailArr.count
   }


   func tableView(tableView: UITableView!, cellForRowAtIndexPath indexPath: NSIndexPath!) -> UITableViewCell!
     {
       let cell:FlightDetailsCell = tableView.dequeueReusableCellWithIdentifier("FlightDetail") as FlightDetailsCell
       let flight = flightDetailArr[indexPath.row]
       cell.setCell(flight.depCity)
       return cell
     }
}

class FlightDetailsOneWay
  {
      var depCity  =  ""
      init(depCity: String)
       {
         self.depCity =  depCity
        }
 }


class FlightDetailsCell: UITableViewCell {


  @IBOutlet var depCity: UILabel!


  override func awakeFromNib()
   {
      super.awakeFromNib()
      // Initialization code
   }

  override func setSelected(selected: Bool, animated: Bool)
   {
       super.setSelected(selected, animated: animated)
       // Configure the view for the selected state
   }

  func setCell(depCity: String)
    {
        self.depCity.text  =  depCity
    }
}

在上述代碼的預覽下方。

預習

由於此答案所需的解釋非常詳細。

請關注我的另一個答案“使用約束移動視圖”以了解如何更新布局約束。

根據你關於如何連接NSLayoutConstraint變量和高度限制的評論? 如下:

  1. 轉到情節提要。
  2. 選擇已添加約束的UIView 單擊Constraints圖標以查看所有約束。 現在,在下圖中,我僅添加了一個約束,您可能會發現更多。 檢查您更改了哪個約束的屬性。

在此輸入圖像描述

  1. 現在單擊視圖控制器,然后單擊“ 顯示連接檢查器” 在這里,您可以看到視圖控制器中定義的所有IBOutlets。 如下圖所示,為簡單起見,我僅創建了一個IBOutlet,它是heightConstraint

在此輸入圖像描述

  1. 這就是您可以將連接添加到約束變量的方法。

在此輸入圖像描述

如果您的所有單元格具有相同的外觀,則可以使用原型單元格:

使用原型單元格制作項目的完整教程

要么

一秒鍾,它更快閱讀

您也可以使用

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath 
{
  return 42.0
}

如果您動態調整高度單元格,則此功能非常完美。

您只需要使用: beginUpdates()endUpdates()使其起作用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM