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