【问题标题】:Using prepareForSegue in Swift在 Swift 中使用 prepareForSegue
【发布时间】:2014-11-30 16:54:38
【问题描述】:

我试图在点击 UIView 时创建一个 Segue,这会导致一个新视图控制器的 segue,该控制器包含被点击的 UIView。基本上取一个只有一半屏幕的 UIView 并使其成为整个屏幕的大小。

我认为我应该使用 prepareForSegue 将我点击的 UIView 传递给新的视图控制器,而不是创建新视图,但我不确定 prepareForSegue 是否应该自动生成,以及它应该在哪里。我将点击手势链接到打开新视图控制器的“显示”segue。我认为 prepareForSegue 是在 Objective-C 中自动生成的,所以我不确定是否应该使用它。

另一个想法是它可能在点击手势的动作函数中,但我不确定这是否比 prepareForSegue 更好或更差。我看到的问题是无法获得对我要移动到的新视图控制器的引用。

【问题讨论】:

  • 我不确定您所说的“自动生成”是什么意思。你必须自己实现prepareForSegue,但它是在启动segue时由系统调用的(你自己不调用它)。请注意,如果您要传递视图本身,则需要先将其从其父视图中删除——它不能同时位于 2 个视图控制器中。
  • 自动生成的意思是它会自动出现在视图控制器代码中(方法签名),但我必须自己实现它。但是,我不确定它是否适用于此,因为我不知道是否应该使用 prepareForSegue 或 UITapGestureRecognizer 操作来切换控制器。

标签: ios iphone swift segue


【解决方案1】:

关于你所说的一些问题......

我认为我应该使用 prepareForSegue 将我点击的 UIView 传递给 新的视图控制器,而不是创建一个新的视图...

您没有将 UIView 传递给新的视图控制器。您将要显示的 UIImage 传递给新的视图控制器。

我将点击手势链接到打开新视图控制器的“显示”segue。

这是一个好的开始,还要确保您已将手势附加到的 UIImageView 在情节提要中将其“启用用户交互”标志设置为 true(我一直忘记这一点。)

您必须自己编写为 segue 做准备。您想将准备 segue 方法放入原始视图控制器中...

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
    // Get the new view controller using segue.destinationViewController.
    // Pass the selected UIImage to the new view controller.
}

【讨论】:

  • 我的意思是我希望 prepareForSegue 方法签名是自动生成的。此外,我希望 UIView 能够在 segue 发生之后(但不是之前)被绘制。 UIImage 会允许这样做吗?在我看来, UIImage 是不可修改的。另一种选择是我为新的视图控制器生成了一个不同的 UIView,然后可以在 segue 之后绘制。
  • 我以为您正在显示图像...无论如何,您在 UIView 中显示的任何数据都需要传递给新的视图控制器。您不要传递 UIView 本身。
【解决方案2】:

一个选项可能是继承 UIStoryboardSegue 并将其用作您的自定义 segue。这样,您就可以处理 fromVC 和 toVC 以及其中的任何视图,以控制 segue 的外观和工作方式。

Apple 文档:https://developer.apple.com/library/ios/featuredarticles/ViewControllerPGforiPhoneOS/CreatingCustomSegues/CreatingCustomSegues.html

我找到的小例子:http://www.albertopasca.it/whiletrue/2013/10/objectivec-uistoryboard-custom-transition/

【讨论】:

    猜你喜欢
    • 2015-03-05
    • 2014-08-31
    • 2015-01-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-18
    • 1970-01-01
    相关资源
    最近更新 更多