我有一个包含两个共享相同信息的原型单元的tableview。当我点击" CardList"按钮所有单元格从一个单元格大小变为较小的大小,然后当我再次点击它时反之亦然。第一次转换工作正常,但从较小的单元格返回到较大的单元格,单元格高度仅为约50磅而不是我设置的338。此外,想知道这是否是通过使用两个不同的单元格来实现此目的的最佳方法。我应该只有一个细胞并重新排列吗?
var CellSize = Int()
@IBAction func CardList(sender: AnyObject){
if (sender.titleLabel!?.text == "Card")
{
tableView.rowHeight = UITableViewAutomaticDimension
tableView.estimatedRowHeight = 338
self.CellSize = 2
self.tableView.reloadData()
sender.setTitle("List", forState: UIControlState.Normal);
}
else
{
tableView.rowHeight = UITableViewAutomaticDimension
tableView.estimatedRowHeight = 142
self.CellSize = 1
self.tableView.reloadData()
sender.setTitle("Card", forState: UIControlState.Normal);
}
}
////////////////
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
if CellSize == 1 {
let cell = self.tableView.dequeueReusableCellWithIdentifier(
"ResultsCell2", forIndexPath: indexPath)
as! ResultsCell2
let row = indexPath.row
cell.Name.text = Names[row]
cell.Image.image = UIImage(named: Images[row])
cell.Price.text = Prices[row]
return cell
}
else
{
let cell2 =
self.tableView.dequeueReusableCellWithIdentifier(
"ResultsCell", forIndexPath: indexPath)
as! ResultsCell
let row = indexPath.row
cell2.Name.text = Names[row]
cell2.Image.image = UIImage(named: Images[row])
cell2.Price.text = Prices[row]
return cell2
}
}
答案 0 :(得分:1)
要以正确的方式设置cellRow的高度,您应该使用此方法:
func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat
{
if CellSize == 1 {
return 338
}
return 50
}
注意:UITableViewDelegate方法并且为了能够使用它,你应该将tableView的委托设置为你自己的类并在那里调用这个方法。