xamarin.ios - 在 Monotouch 对话框部分隐藏元素 - 高度不变

标签 xamarin.ios monotouch.dialog

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

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

Elements 消失了,但是 Section 的高度没有改变。我已经在 DialogViewController 上尝试了所有常用方法,例如 ReloadDataReloadTableViewReload

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

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

最佳答案

更新

找到了隐藏 Monotouch Dialog (MT D) 元素并改变其高度的更好方法。

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

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

并实现IElementSizing接口(interface)的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,因此您可以在元素可见时调用基本实现。其他时候你将不得不自己实现一些东西。这可以是硬编码固定大小或测量标题和详细信息文本。

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

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

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

关于xamarin.ios - 在 Monotouch 对话框部分隐藏元素 - 高度不变,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30716118/

相关文章:

c# - Xamarin iOS - UITextView 通过区域限制

ios - 单点触控 : Force UITableView to recalculate height of each cell without reloading data

ios - Monotouch Dialog 杀死了我的 UINavigationController 后退按钮

xamarin.ios - Monotouch.Dialog:是否有一种简单的方法可以使搜索栏在滚动时停留在 UITableView 的顶部?

xamarin.ios - 找不到 ViewController::.ctor(System.IntPtr) 的构造函数

iPhone:Retina 显示屏将字体写入 UIImage

iphone - 改变 ViewController 的转换方向?

ios - UINavigationController 上的 ViewDidAppear 在向后导航时未被调用

ios - 在 ios 应用程序中使用 svg 或字体图标

ios - 容器 View 中的 UIScrollView 的帧大小不正确