gpt4 book ai didi

ios - 从 subview 调用父 View Controller 函数

转载 作者:搜寻专家 更新时间:2023-10-31 22:59:10 25 4
gpt4 key购买 nike

我有一个带有两个 subview Controller 的父 ViewController。

当我加载父 View Controller 时,它将显示两个 subview 。我还可以向左或向右滑动以滑动 subview 。我现在需要在 subview 上添加一个按钮。单击该按钮时,它应该会自动滑动到下一个 subview 。

这就是我的计划 - 在 subview View Controller 上放置一个按钮。点击按钮将调用父 View Controller 中负责滑动的函数。现在我无法调用父 View Controller 的功能。我需要父 View Controller 的当前实例。有人可以帮忙吗?

图片上,灰色的是subview viewcontroller 1绿色是 subview View Controller 2。单击 viewcontroller1 的按钮应该滑动到 viewcontroller 2

Please click here for screen print

最佳答案

我想到了两种解决方案:

  1. 使您的按钮成为父 View Controller 的 subview ;如果您希望按钮成为其中一个 subview Controller View 的 subview ,这显然不起作用。
  2. 要扩展@NazmulHasan 的建议,您可以为您的 subview Controller 实现自定义协议(protocol)。以 subview Controller 1 为例,您只需为该类声明一个委托(delegate)协议(protocol)。这告诉编译器 View Controller 的委托(delegate)必须实现哪些功能才能满足协议(protocol)。所以你会做这样的事情:
    protocol childViewControllerOneDelegate {
func buttonWasPressed(sender: UIButton) -> Void
}

您还需要向您的 subview Controller 添加一个属性,如下所示:

var myDelegate : childViewControllerOneDelegate!

它是一个隐式解包的可选项,因为您不能在类初始化时设置委托(delegate);您可以按照我将在下面概述的方式进行设置。

然后在父 View Controller 类声明的最顶部声明​​ View Controller 符合此协议(protocol):

class parentViewController : UIViewController, childViewControllerOneDelegate ... Etc, etc {

当您从父 View Controller 初始化 childViewControllerOne 时,您可以在之后直接添加一行:

myChildViewControllerOne.delegate = self

最后,回到您的按钮和 subview Controller ,您只需向其添加一个调用以下操作的操作:

self.myDelegate.buttonWasPressed(self.button)

这将触发父 View Controller 中的方法,您可以做任何您需要做的事情。

希望对您有所帮助。与这些答案一样,我试图将大量信息压缩到一个小空间中,所以如果您有任何问题,请给我留言。一切顺利!

关于ios - 从 subview 调用父 View Controller 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39478466/

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