首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >从实用程序类访问UIViewController

从实用程序类访问UIViewController
EN

Stack Overflow用户
提问于 2017-11-18 19:37:39
回答 1查看 222关注 0票数 1

背景:

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

我有一个名为ButtonClicks的文件,它有一个静态方法ClickAction

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

内部视图控制器:

代码语言:javascript
代码运行次数:0
运行
复制
  button.addTarget(self, action: #selector(onClick(sender:)), for: .touchUpInside)

// .

代码语言:javascript
代码运行次数:0
运行
复制
@objc func onClick(sender: Button){
    ButtonClicks.ClickAction(Button: sender)
}

除了在需要时转换到新的UIViewControllers之外,这几乎和预期的一样工作。

问题:

如何从实用工具类打开一个新的模态UIViewController

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

代码语言:javascript
代码运行次数:0
运行
复制
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)

这段代码启动了一个视图控制器,它以黑色覆盖整个屏幕,忽略.formSheet参数,并将应用程序保留在一个黑色屏幕中。不过,它将print()逻辑从ModalViewController执行到调试区域。

将表示更改为.partialCurl会导致以下错误:

应用程序试图在非全屏视图控制器之间或从非全屏视图控制器显示UIModalTransitionStylePartialCurl。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-11-18 20:02:52

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

代码语言:javascript
代码运行次数:0
运行
复制
 static func ClickAction(Button: Button, viewController: UIViewController) {
     //...
     viewController.present(...
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47370226

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档