gpt4 book ai didi

iOS - 方法正在处理时禁用行选择

转载 作者:行者123 更新时间:2023-12-01 16:42:31 25 4
gpt4 key购买 nike

好的,这是我的第一个问题,所以要温柔!

我有一个 UITableView在 iOS(我们正在使用 Xamarin c# 开发)中,选择一行将在显示之前反序列化来自服务器的 View 。这在我的 iPad mini Retina 上运行良好,没有问题,在模拟器上也是如此。但是,使用 iPad 3 或更低版本的用户在等待解串器完成其工作时会有很大的延迟。我们已尽我们所能对其进行了优化,但仍有延迟。

这种延迟允许用户多次点击该行(认为它没有做任何事情),这会导致处理多次发生,然后反序列化 View 的多个实例出现在堆栈上,这会导致导航错误并且应用程序在试图向下导航回堆栈。

我的问题是,有没有办法在第一次按下后停止为该特定行处理行单击事件,直到我们导航回该 Controller ?我尝试使用 WillSelectRow 和类变量 bool(下面的快速示例)

bool isProcessing = false;
public override NSIndexPath WillSelectRow (UITableView tableView, NSIndexPath indexPath)
{
if(!isProcessing)
return indexPath;
return null;
}

public override void RowSelected (UITableView tableView, NSIndexPath indexPath)
{
isProcessing = true;

var data = GetDataAt(indexPath);

ProcessRowSelection(tableView, indexPath, data);

isProcessing = false;

}

问题是,当我尝试这种方法时,它不会阻止第二次点击被注册,因为它会在开始第二次点击之前触发第一次点击的整个执行,因此 bool 值永远不会捕获它。

任何想法将不胜感激!

最佳答案

我认为在这种情况下使用类变量听起来是一个不错的选择。

在选择单元格时调用的方法中,您可以使用条件来指定是否反序列化 View 。如果 isProcessing == NO , 设置 isProcessingYES并反序列化 View ;否则,不要反序列化 View 。然后一旦 View 完成反序列化,设置 isProcessingNO .

另一个不错的选择是设置单元格甚至整个表格的 userInteractionEnabled属性(property)给 NO然后在 View 完成反序列化后重新启用交互。

关于iOS - 方法正在处理时禁用行选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23010869/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com