我们应该如何显示以下ViewController?

时间:2018-03-08 11:01:20

标签: ios swift

我正面临审讯,我希望你能帮助我找到答案。

我正在连续选择X项。 我已经为连续1个项目选择做了一个自定义警报,看起来像这样。

enter image description here

以下是我如何调用警报

let storyboard = UIStoryboard(name: "Main", bundle: nil)
let myAlert = storyboard.instantiateViewController(withIdentifier: "uploadAlert") as! AlertUploadViewController
myAlert.modalPresentationStyle = UIModalPresentationStyle.overCurrentContext
myAlert.modalTransitionStyle = UIModalTransitionStyle.crossDissolve

let image = self.interventionsSelected[0].picture
myAlert.initAlert(image: image!)

request.view.present(myAlert, animated: true, completion: nil)

如您所见,我只选择了第一张图片。现在,我想拍摄所有选定的图像。

我的问题在于我想要链接所有警报并在它们之间进行平滑过渡。如何链接解除警报和下一个警报?

  • 我应该制作一系列所有警报并抓住解雇权吗?

  • 我是否必须使用闭包并链接所有闭包?

我不确定如何以最佳方式做到这一点。

2 个答案:

答案 0 :(得分:1)

你需要维护你的alertcontroller的委托方法

制定协议

protocol AlertProtocol: class {
    func showNextAlert()
}

现在将主视图控制器指定为其委托

在你的alertviewcotntroller中

var delegate: AlertProtocol?

当您单击警报控制器中的按钮以执行某些操作并关闭警报时,在其完成处理程序中

self.dismiss(animated: true) {
        self.delegate.showNextAlert()
    }

这是您当前的警报关闭,并且维护窗口的持续时间,并在流程中使用新数据打开另一个警报

答案 1 :(得分:1)

我不会同时使用多个警报,因为在视觉上看起来会发生的情况是你的黑暗背景会更暗,有更多警报。当解雇他们每个人时,你的背景会更亮......

在内部支持多个图像看起来相当不错,但如果您稍后选择其中一些内部视图将完全不同(一个用于图像,另一个用于您可以想到的任何图像),它可能无法扩展。

我能想到的最佳方案是使用容器视图创建此叠加视图控制器。因此,该视图能够显示视图控制器,并能够在内部为它们设置动画。您使用它的界面如下所示:

let container = MyContainerViewController.instantiateFromStoryboard()
container.injectViewControllers([
    ShowImageViewController.instantiateFromStoryboard(image: image[0], delegate: self),
    ShowImageViewController.instantiateFromStoryboard(image: image[1], delegate: self),
    ShowSomethingElseViewController.instantiateFromStoryboard(data: data[0], delegate: self)
])
present(container...

那么我想你会有一个委托方法,比如

func embeddedController(_ sender: UIViewController, shouldProceedWithData outputData: Any?) {
    if container.canGoForward() {
        container.forward(animated: true)
    } else {
        container.dismiss(...
    }
}