gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 03:04:52 24 4
gpt4 key购买 nike

我有一个 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/

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