【问题标题】:Xamarin: RowSelected not being called on device, fine in simulatorXamarin:没有在设备上调用 RowSelected,在模拟器中很好
【发布时间】:2014-04-07 12:40:13
【问题描述】:

我正在 Xamarin 中构建一个简单的基于表格视图的应用程序。我在 UITableViewSource 上的 RowSelected 事件在模拟器中完美运行,但是当我在运行 iOS 7.1 的 iPhone 4S 上调试应用程序时没有被调用

这是我在继承 UITableViewSource 的类中的代码

public override void RowSelected (UITableView tableView, NSIndexPath indexPath)
    {
        Console.WriteLine ("Selected");
        tableView.DeselectRow (indexPath, true);
    }

在方法中添加断点在模拟器中按预期工作,但在设备上运行时断点永远不会被命中。没有发生错误,表格中的单元格保持选中状态,就好像我没有覆盖 RowSelected 方法一样。

我尝试了很多方法,包括删除所有其他事件代码,甚至从头开始项目。

任何帮助将不胜感激。

【问题讨论】:

  • 你确定你在debug more的设备上运行它吗?
  • 尝试在 GetCell() 中将 cell.UserInteractionEnabled 设置为 true
  • @choper 是的,我已经在其他地方添加了其他断点和 Console.WriteLine,并且都被调用了。
  • @Chethan 感谢您的建议 - 我已经尝试过了。设置 cell.UserInteractionEnabled = false 会阻止每个单元格被突出显示(在设备和模拟器上),并按预期阻止在模拟器中调用 RowSelected 事件。
  • 这听起来很奇怪。你能把你的示例应用放在 Dropbox 上的某个地方,以便我们试用吗?

标签: ios xamarin.ios xamarin


【解决方案1】:

我刚刚也谈到了这个问题。没有答案的解释,但我关闭了 Xcode,清理并重建了解决方案。就我而言,模拟器工作正常,但设备不会触发行选择。

【讨论】:

    【解决方案2】:

    我遇到了这样的问题,您是否在表格单元格中添加了一些点击手势或其他东西?因为当您点击一行时会调用它,而不是 Row Selected 方法。

    希望对你有帮助。

    【讨论】:

    • 感谢您的建议,但我没有添加任何其他手势。
    【解决方案3】:

    我发现解决方案是从我在 Visual Studio 中编译的 Xamarin 项目中删除引用的 DLL。相反,我将构成 DLL 的 C# 文件添加到 Xamarin 解决方案中,然后允许 Xamarin Studio 将它们编译为构建过程的一部分。这立即解决了问题。

    我尝试的另一件事是更改为 Xamarin Studio 的 Alpha 版本。起初这似乎解决了问题,但后来我意识到,虽然我的应用程序中的主 UITableView 现在正在触发 RowSelected 事件,但还有另一个 UITableView 仍然无法正常工作。

    【讨论】:

      猜你喜欢
      • 2011-04-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-18
      • 2017-11-22
      相关资源
      最近更新 更多