gpt4 book ai didi

ios - Swift - 从 BviewController 调用 AviewController 方法

转载 作者:行者123 更新时间:2023-11-28 09:02:51 26 4
gpt4 key购买 nike

我有两个 viewControllers(AviewController 和 BviewController)在没有使用 segue 的情况下连接。在 AviewController 中,我有一个 UIScrollview。

我想做的是从 BviewController 调用一个函数,该函数将禁用 AviewController 中的 scrollView (AviewController.scrollView.scrollEnabled = false)

如果不使用 segue 我怎么能做到这一点?

View Controller :

var AV = AviewController ()

func disable_AscrollView (){
AviewController.scrollView.scrollEnabled = false
}

最佳答案

那么,您描述的代码不起作用,因为 AV 与屏幕上显示的实例不是 AviewController 的实例。

获取正确实例的方法有多种,视情况而定。

  1. 如果您确定整个应用中只有一个AviewController,您可以声明一个static var sharedInstance: AviewController,并设置在 viewDidLoad 函数中将此变量赋给 self。现在,在您的应用程序的任何地方,您都可以将其称为 AviewController.sharedInstance 并调用其函数,例如自定义 disableScrollView 函数。(这似乎不适用于 Swift,请参阅评论。)

  2. 如果 AviewController 在 View 层次结构中有固定位置,您可以通过应用程序委托(delegate)的 window 属性找到它,例如

    UIApplication.sharedApplication().delegate.window.rootViewController

    Root View Controller 可能是一个 UINavigationController,在这种情况下您必须深入挖掘。

  3. 使用NSNotificationCenter。在AviewControllerviewDidLoad中,注册通知:

    NSNotificationCenter.defaultCenter().addObserver(self,
    selector: "disableScrollView:",
    name: "DisableScrollView",
    object: nil)

    实现 disableScrollView 函数(使用 @objc 将其用作选择器):

    @objc func disableScrollView(notification: NSNotification) {
    // do something
    }

    当需要关闭scroll view时,调用即可

    NSNotificationCenter.defaultCenter().postNotificationName(
    "DisableScrollView", object: nil)

    来自 BviewController

关于ios - Swift - 从 BviewController 调用 AviewController 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31625328/

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