【问题标题】:UITableView selection changed event in MonotouchMonotouch中的UITableView选择更改事件
【发布时间】:2011-08-05 15:55:53
【问题描述】:

我创建了一个自定义的视图层次结构,在这个层次结构中的某个地方是一个 UITableView,有一个名为 TableView 的插座,所以我可以从后端代码访问它。

我想在选择该列表中的项目时创建并按下rootiveController的视图堆栈,但我找不到UITableView上的任何相关事件。

所有控件均使用 .XIB 文件中的 Interface builder 定义

我是不是找错地方了?

提前致谢。

【问题讨论】:

  • 您说“该列表中的项目已被选中”。哪个清单?哪个项目?请说明这一点。
  • 问题是,如果选择了单点触控 UITableView 中的任何项目,我该如何收听。但是感谢您的宝贵时间。

标签: iphone ios xamarin.ios xib


【解决方案1】:

是的,你找错地方了。要使用 UITableView 的“事件”,您必须实现 UITableViewSource 并将其分配给您的表格视图。最常见的方法是在表格视图的控制器中作为嵌套类:

private class MyTableSource : UITableViewSource
{

    public override void RowSelected(UITableView tableView, NSIndexPath indexPath)
    {

        // Do something for the selected row

    }

    // Override both RowsInSection and GetCell methods!

}

然后将 MyTableSource 类设置为表格视图的 Source 属性:

myTableView.Source = new MyTableSource();

请注意,UITableViewSource 类在 Objective-C 中不存在。它只是一个承载 UITableViewDataSource 和 UITableViewDelegate 方法的 MonoTouch 类,使事情变得简单得多。

【讨论】:

  • 感谢您的明确答复。我感到困惑的原因是,我使用的是 UITableViewDataSource 而不是来自一个看似过时的示例的 UITableViewSource。 (这在我的示例代码中没有出现)
  • 不客气,很高兴我能帮上忙。你仍然可以同时使用 UITableViewDataSource 和 UITableViewDelegate,只是它需要一些代码。
  • @DimitrisTavlikos:谢谢!我竭力想弄清楚为什么我没有在桌面本身或委托类上获得事件。但是如果表和表委托类不起作用,为什么会有这些事件呢?
  • @JoshuaFrank:很高兴知道它有帮助。你在说哪些事件? UITableView 中的事件基本上是 UITableView 覆盖的 UIScrollView 的事件。
【解决方案2】:

RowSelected 事件发生在 UITableViewSource 中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-20
    • 2013-05-24
    • 2012-05-17
    • 1970-01-01
    • 2012-09-26
    • 2010-11-14
    相关资源
    最近更新 更多