ios - 在 Segue 完成之前按下按钮 iOS + Swift

标签 ios swift

当我使用按钮在 View Controller 之间切换时,如果重复按下按钮,下一个 View Controller 将继续出现。我不知道是什么原因导致了这个错误。

视频:https://drive.google.com/file/d/0B64lwT9kq3khRHNtZ0d0Q1hiNEk/view?usp=sharing

最佳答案

看起来您的按钮在圆展开动画期间仍然处于事件状态,因此每次按下它时,另一个 View Controller 都会被推送到导航堆栈。然后推送动画就会堆叠起来。

尝试在触发动画之前禁用按钮,并在使用 button.enabled = NO;button.userInteractionEnabled = NO; 后重新启用它。

或者,您可以实现 -prepareForSegue:sender: 并禁用转场之前的按钮,然后在 -viewWillAppear: 中重新启用该按钮。

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    if ([segue.identifier isEqualToString:@"YourSegueIdentifier"]) {
        self.nextButton.userInteractionEnabled = NO;
    }
}

- (void)viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:animated];
    self.nextButton.userInteractionEnabled = YES;
}

要获取segue.identifier,只需单击 IB 中的 segue 并转到“属性检查器”选项卡。如果您更愿意使用 IB 来处理 Segues 而不是 UIControl(或本例中的 UIButton)上的目标操作,那么这种方法可能更适合您。

关于ios - 在 Segue 完成之前按下按钮 iOS + Swift,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36504871/

相关文章:

Swift iAP 错误(Objective-C 方法 * 与可选要求方法冲突)

ios - ""CCSprite 没有使用相同的纹理 ID ""解决方法?

ios - 使用 firebase 云消息传递启动应用程序时出错

objective-c - 将十六进制值存储到 NSData

iphone - 帮助! uitableviewcell 按钮按下更新文本字段

ios - 如何以视觉语言格式编写内在大小的内容拥抱优先级?

ios - Firebase 可扩展性 : Observer on whole data set vs multiple observers

ios - Firebase 注册函数中无法将类型 'User?' 的值转换为预期参数类型 'User!' 错误

android - Flutter:不使用 AppBar 时如何在 Android 和 iOS 上更改状态栏文本颜色

ios - 如何获取网站的 HTML 内容