ios - 摇动手势并准备 seuge - 开始/结束外观转换的不平衡调用

标签 ios uitableview uigesturerecognizer pushviewcontroller

我有一个 UITabelViewController (mainViewCtrl),如果用户选择一个单元格,一个新的 UIViewController (detailViewCtrl) 会被插入“场景”,其中包含一些细节有关所选单元格的数据。 - 很简单的东西。

如果用户摇动手机,(detailViewCtrl) 将显示一些随机的细节数据。

这是我的 prepareForSeque 代码:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{

    if ([segue.identifier isEqualToString:@"DetailViewSeque"])
    {
        int i;

        if ([sender isKindOfClass:[UITableViewCell class]]){
            UITableViewCell *cell = (UITableViewCell*)sender;
            NSIndexPath *indexPath = [self.minifigsTableView indexPathForCell:cell];
            i = indexPath.row;
        }else{
            i = arc4random() % [self.collectionOfData count];
        }

            DeatilViewController *dest = [segue destinationViewController];
            dest.data = [self.collectionOfData objectAtIndex:i];

    }

}

代码非常简单,没什么花哨的。我的问题是,如果用户在两个 ViewController(mainViewCtrl 和 detailViewCtrl)之间的转换正在进行时摇动手机,我将收到此错误:

开始/结束外观转换的调用不平衡。

我明白为什么这会导致问题。

但是我该如何解决呢?在转换处于事件状态时,如何以某种方式阻止 UIGestureEvent 被触发?

最佳答案

这就是我解决问题的方法。

首先我添加了:@property BOOL isInTransit;

然后我将 viewDidAppear 方法添加到我的代码中,并将 isIntransit 设置为 true(viewDidAppear 将在转换结束后调用。 )

-(void)viewDidAppear:(BOOL)animated
{
    self.isInTransit = true;
}

最后,我在 motionBegan 方法中添加了一个 if 语句,并在调用 preformeSegueWithIdentifier 之前将 isInTransit 设置为 false:

 - (void)motionBegan:(UIEventSubtype)motion withEvent:(UIEvent *)event
    {
        if (event.subtype == UIEventSubtypeMotionShake)
        {
            if (self.isInTransit){
                self.isInTransit = false;
                [self performSegueWithIdentifier:@"DetailViewSeque" sender:self];
            }
        }
    }

感谢 Armand DOM 帮助我。

关于ios - 摇动手势并准备 seuge - 开始/结束外观转换的不平衡调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22897960/

相关文章:

ios - UITableView 自定义 accessoryView 只出现在最后一个单元格中

ios - 如何解决webView及其子view的Gesture冲突?

ios - 使用 .bin 文件 Swift 创建 Data 对象

c# - Unity Share 脚本 Android 到 iOS

ios - 在 Swift 3 中对包含日期的字符串元组数组进行排序?

ios - reloadData() 不能快速工作

iphone - 在 UITableviewcell 中存储 boolean 值

ios - Swift 如何使用带有平移手势的属性动画器

ios - 同时处理两个手势识别器

ios - Ray Wenderlich 的 Mapkit 教程中的 SIGABRT