Диалог MonoTouch StringElements с переменной высотой ячейки

#c# #ios #ipad #xamarin.ios #monotouch.dialog

#c# #iOS #iPad #xamarin.ios #monotouch.dialog

Вопрос:

У меня возникла проблема с переопределением GetHeight метода при разработке приложения для iPad с MonoTouch.Диалоговое окно. Я внедряю, IElementSizing но мой GetHeight метод никогда не вызывается.

Кто-нибудь еще сталкивался с этой проблемой? Спасибо.

Я убедился, что мой root.Неравномерные ряды = true;

Я также пытался включить dialog project и поместить точку останова в getHeight() для любого из элементов, которые реализуют IElementSizing, но безуспешно. В предыдущем проекте для iPhone это работало нормально, но на iPad я все еще застрял. Есть ли какие-либо другие «подводные камни», которые я мог упустить?

Ответ №1:

Это своего рода ошибка в MonoTouch.Диалоговое окно. По сути, когда вы назначаете корневой элемент, он хочет знать, есть ли неравномерные строки, чтобы он мог создать и кэшировать соответствующий объект UITableViewSource.

Однако, если вы добавите разделы с элементами, которые реализуют IElementSizing, к корневому элементу после того, как исходный объект уже создан. Тогда это не вызовет переопределение getHeight. Примером этого может служить асинхронная выборка данных и обратный вызов и добавление результирующих разделов / элементов в rootElement … или, по сути, в любое время, когда вы добавляете разделы / элементы после вызова PrepareRoot().

Для этого есть простой обходной путь:

 this.Root.UnevenRows = true;
  

Однако, не глядя на ваш код, я не могу сказать, является ли это ошибкой, которую вы видите.