背景
我正在尝试组织我的代码以供重用。我喜欢保留一个Utility类来处理我在Android上的所有按钮点击逻辑,并且我正在尝试做类似iOS的事情。
我有一个名为ButtonClicks
的文件,其中包含静态方法ClickAction
。
从我扩展的自定义UIButton
添加一些数据,我使用#selector
内的UIViewController
。
内部视图控制器:
button.addTarget(self, action: #selector(onClick(sender:)), for: .touchUpInside)
// ...
@objc func onClick(sender: Button){
ButtonClicks.ClickAction(Button: sender)
}
除了在需要时转换到新UIViewControllers
之外,其效果与预期相同。
问题:
如何从实用程序类中打开新模式UIViewController
?
我正在传递一个视图对象,所以我在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)
此代码启动一个视图控制器,以黑色覆盖整个屏幕,忽略.formSheet
参数并将应用程序覆盖在黑屏中。它虽然从print()
到调试区域执行ModalViewController
逻辑。
将演示文稿更改为.partialCurl
会出现此错误:
应用程序试图将UIModalTransitionStylePartialCurl呈现给或 来自非全屏视图控制器
答案 0 :(得分:1)
您可以将UIViewController传递给onclick函数,例如:
String appUri = getApplication().getURL().toString() + getWindow().getName() + "/";