显示/隐藏其他单元格后,在弹出窗口中获取正确的uitableview高度

时间:2014-11-14 10:48:18

标签: ios uitableview uipopovercontroller

我在UITableView中显示UIPopoverController。如果点击了另一个单元格,则此表格视图会隐藏/显示一些单元格(与this tutorial比较)。因为它是在popover中我想调整popover的大小。因此,我想使用preferredContentSize的动画。

现在的问题是,如果我计算contentSize我没有得到实际尺寸,因为之后会调用heightForRowAtIndexPath。在重新加载表视图或检测表视图的高度变化后,我需要表视图高度。

如何获得表格视图的正确高度以适应弹出窗口的大小?

可能的解决方法:

  1. 滚动新单元格的位置
  2. 永远不会隐藏细胞
  3. 以全尺寸显示popover
  4. 手动计算尺寸
  5. 但所有变通方法都有一些缺点/限制。 1号看起来并不好看,2号在横向模式下对我不起作用(其他内容可以忽略不计),3号看起来并不好看,其他内容也可以如果我意识到所有可能的情况,那么被忽视了,第4号就可以了。

    仍在寻找更好的解决方案。

1 个答案:

答案 0 :(得分:0)

只有手动计算高度才对我有用。我的代码在C#中,这就是我所做的:

我使用了一个类变量来存储实际高度。在viewDidLoad我有这个

TableView.LayoutIfNeeded ();
height = TableView.ContentSize.Height;
this.PreferredContentSize = new SizeF (320f, height);

showDatePickerCellhideDatePickerCell中我计算新的高度并为弹出窗口设置它:

UIView.Animate (
    0.25,
    animation: () => {
        height += 206f;
        this.PreferredContentSize = new SizeF (320f, height);
    }
);

现在,popover会根据需要扩展和缩小。