在对话框视图控制器中滚动破坏的单元格分接事件

时间:2013-09-17 17:21:36

标签: ios xamarin.ios xamarin

我正在尝试使用MTD框架在Xamarin.IOS中实现无限滚动。为了实现这一点,我从TableView属性处理了Scrolled事件,但是一旦我为该事件定义了一个处理程序,我的元素的所有Tapped事件(都是StyledStringElement)都停止工作,不再调用处理程序。即使我稍后在我的代码中取消订阅该事件,只要我“触摸”滚动事件,单元格Tapped break。

以下是我处理滚动事件的方法:

_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 个答案:

答案 0 :(得分:1)

问题是基于事件的系统和UIKit的基于本机委托的系统是互斥的。这意味着如果您使用事件,则无法使用委托,如果您使用委托,则无法使用事件。

您正在访问的TableView恰好具有由MonoTouch.Dialog设置的委托处理程序,因此当您提供事件时,它会重置事件的内部处理。

唯一的解决方案是对内部Tableview委托进行子类化,并将其作为委托来拦截这些消息。