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

Ios 如何将第二个操作(segue)添加到UIAlertAction操作?,ios,swift,uialertcontroller,uialertaction,Ios,Swift,Uialertcontroller,Uialertaction,请原谅,我对ios编码比较陌生: 我已经实现了一个带有“取消”和“购买”按钮的操作表。购买按钮操作成功执行,没有问题 但是,我想做的是,添加另一个(第二个)动作,让用户在调用原始(第一个)动作后自动切换到另一个屏幕 简化:我想按下购买按钮(在我的操作表上)下载产品,然后想自动进入下载屏幕查看我的新下载 private func setBuyButton() -> Void { // Buy button action sheet actionSheet = UIAlert

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

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

但是,我想做的是,添加另一个(第二个)动作,让用户在调用原始(第一个)动作后自动切换到另一个屏幕

简化:我想按下购买按钮(在我的操作表上)下载产品,然后想自动进入下载屏幕查看我的新下载

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)
}

在情节提要中,control单击视图控制器上方的黄色圆圈图标,然后拖动到目标视图控制器以创建一个片段。 选择segue并给它一个标识符

现在,您可以在第一个视图控制器中调用
performsgue(带标识符:sender:)
,以编程方式进行分段。在你的情况下,把

self.performSegue(withIdentifier: "yourCustomSegue", sender: nil) 
在您的行中,操作处理程序将以编程方式执行此操作。

。 使用
UICollectionViewController
的子类创建文件
DownloadView
,然后在操作中添加这些代码

let layout = UICollectionViewFlowLayout()
let controller = DownloadView.init(collectionViewLayout: layout)
self.navigationController?.pushViewController(controller, animated: true)
另外,如果您不需要
collectionView
,请使用
UIViewController
子类创建一个文件,并按如下方式推送它

self.navigationController?.pushViewController(DownloadView(), animated: true)
带故事板 添加带有identifer
down
的viewController,并在操作处理程序中写入这些代码

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

只要在下载过程完成后插入segue的行,或者可以在完成处理程序中插入。谢谢,我非常感谢Ricky,但我知道如何使用ID创建segue,我只是不确定代码放在哪里,以及是否需要一些声明。在@KrunalNagvadia的回答的帮助下,我发现了这一点。谢谢大家!这里有一个后续问题:如果我要使用的屏幕是UITabBarController的一部分,我是否需要创建一个新的segue?我可以通过UITabBarController完成这个过程吗?再次请注意,我的编码水平不高,所以我的问题可能有点低。您可以转到
UITabBarController
,通过
prepare(for:sender:)
传递有关要选择哪个选项卡的信息,然后通过修改<代码>选择索引< /代码>选择< <代码> VIEWDATABORION <代码> UITabBarController > <代码>。好的,谢谢瑞奇,我今天晚些时候再试试看。嘿,瑞奇,我被迫在SWIFT中提高技能,我每周找一个家庭教师大约两个小时,这是你做的还是会考虑的?Thanks@Jamakes不,我不是家庭教师:-)谢谢你!我使用了第三个选项(带有故事板),效果很好!Yourwellcom,请检查正确答案,以便于他人选择。我刚刚注意到,虽然代码正在工作并显示正确的屏幕,但它没有改变,并且高亮度地照亮了我已切换到的屏幕的UITabBar图标/项目,如何更改所选的TabBar图标?代码:让myProductsView=self.storyboard?.instanceeviewcontroller(标识符为:“MyProductsVC”)为!MyProductsVC self.navigationController?.pushViewController(myProductsView,动画:false)rootViewController应具有导航控制器,情节提要单击第一个屏幕-->编辑-->嵌入-->navigationController