我在我的应用中遇到了一个奇怪的错误:
设置
简单的Master-Detail应用程序,iPhone风格(即没有拆分视图,没有弹出框,只有导航控制器,表视图控制器和视图控制器)。
错误
您还可以在步骤2触摸多个单元格,其目标视图将按正确的顺序堆叠:)
重现
我能够使用干净的,新创建的应用程序以及iPhone的Twitter应用程序的最后一个版本(通过用手指#1触摸“加载”标签并多次触摸推文)来重现该错误。 / p>
但是,我无法在“常规”标签下的“设置”应用中触发相同的行为(这是一个分组的表格视图)。
该错误在iOS 6.0和6.1上重现。我没有旧版本的设备可供测试。
问题
在创建基于导航/表视图的应用程序时,这是一个众所周知的技巧吗?如果有,是否有解决方案来防止这种(奇怪的)行为?或者这是一个iOS错误(如果是这样,它是否已经从Apple知道)?
答案 0 :(得分:4)
您可以使用的可能的间隙措施是实施
- (BOOL)shouldPerformSegueWithIdentifier:(NSString *)identifier sender:(id)sender
并使用布尔标志或其他东西来表明您当前正在尝试执行该segue。例如:
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
}
答案 1 :(得分:0)
这是Apple在iOS 7中修复的。
对于操作系统的早期版本,Dan F's answer应该可以解决问题。