gpt4 book ai didi

ios - 从 Utility 类访问 UIViewController

转载 作者:行者123 更新时间:2023-11-28 06:08:44 25 4
gpt4 key购买 nike

背景:

我正在尝试组织我的代码以供重用。我喜欢保留一个 Utility 类来处理我在 Android 上的所有按钮点击逻辑,并尝试在 iOS 上做类似的事情。

我有一个名为 ButtonClicks 的文件,其中包含一个静态方法 ClickAction

在我扩展以添加一些数据的自定义 UIButton 中,我在 UIViewController 中使用了 #selector

内部 View Controller :

  button.addTarget(self, action: #selector(onClick(sender:)), for: .touchUpInside)

//...

@objc func onClick(sender: Button){
ButtonClicks.ClickAction(Button: sender)
}

除了在需要时转换到新的 UIViewControllers 之外,这与预期的工作非常一致。

问题:

如何从实用程序类打开新模式 UIViewController

我目前正在传递一个 View 对象,因此我在 ButtonClicks 类中尝试了以下操作:

Class ButtonClicks {

static func ClickAction(Button: Button) {

...
// logic for sorting out which action to take
...

let modalViewController = ModalViewController()
modalViewController.modalPresentationStyle = UIModalPresentationStyle.formSheet
modalViewController.modalTransitionStyle = UIModalTransitionStyle.coverVertical

Button.superview?.window?.rootViewController?.present(modalViewController, animated: true, completion: nil)

此代码启动一个以黑色覆盖整个屏幕的 View Controller ,忽略 .formSheet 参数并使应用程序覆盖在黑色屏幕中。不过,它执行从 ModalViewController 到调试区域的 print() 逻辑。

将 presentationtyle 更改为 .partialCurl 会出现此错误:

Application tried to present UIModalTransitionStylePartialCurl to or from non-fullscreen view controller

最佳答案

您可以将 UIViewController 传递给 onclick 函数,例如:

 static func ClickAction(Button: Button, viewController: UIViewController) {
//...
viewController.present(...
}

关于ios - 从 Utility 类访问 UIViewController,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47370226/

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