【问题标题】:Hiding Elements in a Monotouch Dialog Section - Height does not change在 Monotouch 对话框部分中隐藏元素 - 高度不会改变
【发布时间】:2015-06-08 18:07:35
【问题描述】:

我有一个包含 5 个元素的 Monotouch 对话框部分。

当条件为真时,我需要隐藏元素 1-4 并显示元素 5。当条件为假时,我需要显示元素 1-4 并隐藏元素 5。

元素消失,但部分高度没有改变。我已经在 DialogViewController 上尝试了所有常用方法,例如 ReloadDataReloadTableViewReload

我能看到的唯一会导致高度变化的方法是部分上的RemoveRange,我不想添加和删除元素

当元素被隐藏时,如何关闭部分?

【问题讨论】:

    标签: xamarin.ios monotouch.dialog


    【解决方案1】:

    更新

    找到了一种更好的方式来隐藏 Monotouch Dialog (MT D) 元素并改变它们的高度。

    创建一个继承自您正在使用的 MT D 元素的自定义类

    public class DateElement : CrossUI.Touch.Dialog.Elements.DateElement, IElementSizing
    

    并实现 IElementSizing 接口的 GetHeight

    public nfloat GetHeight(UITableView tableView, Foundation.NSIndexPath indexPath)
    {
        if (this.Visible == false)
        {
            return 0;
        }
        else
        {
            return 44.0f;
        }
    }
    

    只要 DialogViewController 被标记为具有 UnevenRows,实现 IElementSizing 的元素就会调用它们的 GetHeight。当元素不可见时,只需返回 0。

    某些元素已经实现了 GetHeight,因此您可以在元素可见时调用基本实现。其他时候你将不得不自己实现一些东西。这可以是硬编码固定大小或测量 Caption 和 Detail 文本。

    我可以“隐藏和显示”元素的唯一方法是在需要时删除和插入元素。

    我们正在使用 MVVMCross,并且我正在绑定到 ViewModel 属性来控制可见性。现在我正在使用 MvxPropertyChangedListener 并监听之前绑定的相同属性。

    现在,当属性更改时,我在 Section 上调用 Remove 和 Insert 方法。不是我想要的,但它有效。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-25
      • 1970-01-01
      • 2022-01-05
      • 1970-01-01
      相关资源
      最近更新 更多