2013-09-17 3 views
0

Я пытаюсь реализовать бесконечный свиток в Xamarin.IOS, используя структуру MTD. Для этого я обработал событие Scrolled из свойства TableView, но как только я определяю обработчик для этого события, все события Tapped из моих элементов (которые все StyledStringElement) перестают работать, обработчик больше не вызывается. Даже если я откажусь от подписки на событие позже в своем коде, как только я коснусь события Scrolled, ящик Tapped break.Прокрутка в DialogViewController перебила событие ячейки tapped

Вот что мне делать, чтобы обработать событие прокрутки:

_root_ViewController = new DialogViewController(_rootElement); 
_root_ViewController.TableView.Scrolled += TableView_Scrolled; 

Вот как я создаю свои клетки:

StyledStringElement newCell = new StyledStringElement(item.Name) 
{Accessory = UITableViewCellAccessory.DisclosureIndicator }; 
newCell.Tapped+=()=> _nav.PushViewController(getDetailView(item.Name, item.ID), true); 

Любые идеи? Если это ошибка или что-то, что не должно быть сделано, каков был бы правильный способ реализации бесконечной прокрутки? Я должен обнаружить, что пользователь подбирает нижнюю часть таблицы для «предварительной выборки» на следующей странице.

Спасибо.

ответ

1

Проблема в том, что система на основе событий и собственная система на основе делегатов UIKit являются взаимоисключающими. Это означает, что если вы используете события, вы не можете использовать делегатов, и если вы используете делегатов, вы не можете использовать события.

В представлении TableView, к которому вы обращаетесь, имеется обработчик делегата, установленный MonoTouch.Dialog, поэтому, когда вы предоставляете события, он сбрасывает внутреннюю обработку для него.

Единственным решением для этого является подкласс внутреннего делегата TableView и обеспечение того, чтобы ваш делегат перехватил эти сообщения.

Смежные вопросы