C# · 12月 25, 2021

c# – MonoTouch Dialog StringElements可变单元格高度

在使用MonoTouch.Dialog开发iPad应用程序时,我遇到了覆盖GetHeight方法的问题.我正在实现IElementSizing,但我的GetHeight方法永远不会被调用.

还有其他人遇到过这个问题吗?谢谢.

我确保我的root.UnevenRows = true;

我还尝试包含对话框项目,并在GetHeight()中为任何实现IElementSizing但没有运气的元素放置一个断点.在以前的iPhone项目中,这个工作正常,但在iPad上我仍然卡住了.还有其他任何“陷阱”我可能会丢失吗?

解决方法 这是MonoTouch.Dialog中的一个错误.基本上,当您分配根元素时,它想知道是否存在不均匀的行,因此它可以创建和缓存适当的UITableViewSource对象.

但是,如果在创建Source对象后,将具有实现IElementSizing的元素的Sections添加到Root元素.然后它不会调用你的GetHeight覆盖.例如,如果您获取数据异步和回调并将生成的Sections / Elements添加到RootElement …或者基本上在调用PrepareRoot()之后添加Sections / Elements时.

有一个简单的解决方法:

this.Root.UnevenRows = true;

但是,如果不查看您的代码,我不能说这是否是您看到的错误.