如何将第二个动作(segue)添加到UIAlertAction动作?

时间:2019-03-27 03:48:44

标签: ios swift uialertcontroller uialertaction

请原谅,我对ios编码比较陌生:

我已经通过“取消”和“购买”按钮实现了一个actionSheet。 “购买”按钮操作成功执行,没问题。

但是,我想做的是添加另一个(第二个)操作,该操作使用户可以在调用原始(第一个)操作后自动选择另一个屏幕。

简化的:我想按(在我的actionSheet上)购买产品的“购买”按钮,然后想自动进入下载屏幕以查看我的新下载内容。

private func setBuyButton() -> Void {

    // Buy button action sheet
    actionSheet = UIAlertController(title: "CONFIRM PURCHASE", message: "\(self.products.title) will be added to your Download page", preferredStyle: .actionSheet)

    let cancel = UIAlertAction(title: "Cancel", style: .cancel, handler: nil)

    let confirmPurchase = UIAlertAction(title: "Buy", style: .default) { action in

        var productList = [String: Bool]()
        let productSetName = [self.productSetId : true]

        self.product.map({ (drop: Drop) -> Void in
            productList[product.productKey] = true
        })

        if let userId = KeychainWrapper.standard.string(forKey: KEY_UID) {
            let downloads = ["product": productList, "productset": productSetName]
            DataService......blah, blah, blah...

        }
    }

    actionSheet.addAction(confirmPurchase)
    actionSheet.addAction(cancel)
}

2 个答案:

答案 0 :(得分:1)

在情节提要中,单击视图控制器上方的黄色圆圈图标,然后拖动到目标视图控制器以创建序列。 Create segue 选择segue并为其指定一个标识符 Give your segue an identifier

现在,您可以在第一个视图控制器中调用performSegue(withIdentifier:sender:)进行编程选择。您的情况下,

self.performSegue(withIdentifier: "yourCustomSegue", sender: nil) 

在您的行操作处理程序中可以解决问题。

答案 1 :(得分:0)

通过编程。

使用子类DownloadView创建文件UICollectionViewController,然后在您的操作中添加以下代码

let layout = UICollectionViewFlowLayout()
let controller = DownloadView.init(collectionViewLayout: layout)
self.navigationController?.pushViewController(controller, animated: true)

此外,如果不需要collectionView,请创建一个子类为UIViewController的文件,并像这样推送它

self.navigationController?.pushViewController(DownloadView(), animated: true)

使用情节提要

添加带有标识符down的viewController并将这些代码写入动作处理程序

let downloadView = self.storyboard?.instantiateViewController(withIdentifier: "down") as! DownloadView
self.present(downloadView, animated:true, completion:nil)