gpt4 book ai didi

ios - UITableView push segue 触发多次

转载 作者:可可西里 更新时间:2023-11-01 04:42:07 24 4
gpt4 key购买 nike

我在我的应用中遇到了一个奇怪的错误:

设置

一个简单的主从应用程序,iPhone 风格(即没有 Split View,没有弹出窗口,只有一个导航 Controller 、一个 TableView Controller 和一个 View Controller )。

enter image description here

漏洞

  1. 触摸表格 View 的“背景”部分(我的屏幕截图中较暗的灰色部分),例如部分页眉或页脚。
  2. 将手指保持在屏幕上,多次触摸一个单元格。
  3. 松开所有手指。 “详细” View 将正常推送,但是当触摸后退按钮时,您会发现详细 View 的堆叠次数与您在步骤 2 中触摸单元格的次数相同。

enter image description here

您还可以在第 2 步触摸多个单元格,它们的目标 View 将以正确的顺序堆叠:)

转载

我能够使用一个干净的、新创建的应用程序重现该错误,并且在 iPhone 版 Twitter 应用程序的最新版本中(通过用手指#1 触摸“正在加载”标签并多次触摸推文)。

但是,我无法在“常规”选项卡(这是一个分组表格 View )下的“设置”应用中触发相同的行为。

该错误在 iOS 6.0 和 6.1 上重现。我没有要测试的旧版本设备。

问题

在创建基于导航/表格 View 的应用程序时,这是一个已知的技巧吗?如果是,是否有解决方案来防止这种(奇怪的)行为?或者这是一个 iOS 错误(如果是,Apple 是否已经知道)?

最佳答案

您可以使用的一个可能的权宜之计是实现

- (BOOL)shouldPerformSegueWithIdentifier:(NSString *)identifier sender:(id)sender

并使用 bool 标志或其他东西来指示您当前正在尝试执行该转场。例如:

BOOL doingSegue = NO;

-(void) viewWillAppear
{

doingSegue = NO;
}

- (BOOL)shouldPerformSegueWithIdentifier:(NSString *)identifier sender:(id)sender
{

if ( [identifier isEqualToString:@"MySegueIdentifier"] )
{
if ( doingSegue )
{
return NO;
}
else
{
doingSegue = YES;
return YES;
}
}
return YES;
}

Swift 版本

var doingSegue = false

override func viewWillAppear(_ animated: Bool) {
doingSegue = false
}

override func shouldPerformSegue(withIdentifier identifier: String, sender: Any?) -> Bool {
if identifier == "MySegueIdentifier" {
if doingSegue {
return false
}
else {
doingSegue = true
return true
}
}
return true
}

关于ios - UITableView push segue 触发多次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15274961/

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