gpt4 book ai didi

iOS 自定义 Segue 不工作

转载 作者:行者123 更新时间:2023-11-29 10:41:29 25 4
gpt4 key购买 nike

我刚刚开始学习如何开发 iOS 应用。 (请注意,我使用的是 XCode 6 beta 和 Swift)我认为我很擅长自己构建界面,但我似乎在使用 segues 时遇到了麻烦。

我的应用程序的第一页只是一个带有注册按钮和登录按钮的简单屏幕。我为注册页面制作了一个单独的 View Controller ,并在其上放置了一个文本字段。这两个 View Controller 都在我的 Storyboard中。然后我创建了一个自定义的 segue 类来简单地为起始页面和注册页面设置动画,将一个屏幕向左移动,以便现在显示注册页面。这是我的自定义 segue 类:

class SlideFromRightSegue: UIStoryboardSegue {
override func perform() {
let screenWidth = UIScreen.mainScreen().bounds.width
let center = self.sourceViewController.view!.center
UIView.animateWithDuration(0.25,
animations: {
self.sourceViewController.view!.center = CGPoint(x: center.x - screenWidth, y: center.y)
self.destinationViewController.view!.center = CGPoint(x: center.x - screenWidth, y: center.y)
}, completion: { (finished: Bool) in
self.sourceViewController.presentViewController(self.destinationViewController as UIViewController, animated: false, completion: nil)
})
}
}

我是基于我找到的一个教程,我认为这里没有问题。我只是将源 VC 和目标 VC 的中心设置为向左一个屏幕的动画。我不完全确定动画在 iOS 中是如何工作的,但我发现教程的结构类似,所以我假设调用传递到“动画”参数的闭包,然后 iOS 生成中间的所有步骤并将每个帧绘制到屏幕。 (如果我错了请纠正我)

所以我有一个自定义转场。我回到 Storyboard,单击注册按钮,转到连接选项卡,将“触发的 Segues - 操作”拖到第二个 VC,选择“自定义”,然后选择我的自定义类。出于某种原因,它不是“SlideFromRightSegue”,而是“_TtC524SlideFromRightSegue”。我不确定为什么会这样,但我认为这与我重命名了 segue 类有关,我希望这不会造成任何问题。无论如何,这样做会创建一个从第一个 VC 到第二个 VC 的箭头,所以我认为它有效。

当我运行该应用程序时,我会像往常一样看到开始屏幕。我单击注册按钮,但没有任何反应。可能我错过了什么,但我在我的 segue 的 perform() 函数中放置了一个断点,在第一个 VC 的 prepareForSegue() 函数中放置了另一个断点。两者都没有被触发。我想我已经正确设置了 segue,我只是在我的应用程序中的实际实现有问题。有人知道发生了什么事吗?

最佳答案

是的,事实证明问题是我也在使用自定义按钮类,它覆盖了 touchesBegan、touchesEnded 和 touchesCancelled 函数。这些重写没有回调到父类(super class)方法,所以按下按钮的 Action 甚至没有被触发。

我想我可以从这一切中吸取的教训是确保知道哪些函数覆盖必须回调父类(super class),哪些应该完全覆盖父类(super class)。触摸事件处理程序可能需要回调父类(super class)。

关于iOS 自定义 Segue 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24356444/

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