Как добавить второе действие (segue) к действию UIAlertAction? - PullRequest
0 голосов
/ 27 марта 2019

Пожалуйста, извините, я относительно новичок в кодировании ios:

Я реализовал actionSheet с кнопками «Отмена» и «Купить». Действие кнопки Купить выполнено успешно, без проблем.

Но я хочу добавить еще одно (второе) действие, которое позволяет пользователю автоматически переходить на другой экран после вызова исходного (первого) действия.

Упрощенно: я хочу нажать кнопку «Купить» (на моем листе action), чтобы загрузить продукт, а затем автоматически перейти на экран загрузки, чтобы увидеть мои новые загрузки.

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 ]

1 голос
/ 27 марта 2019

В вашей раскадровке, элемент управления щелкните значок желтого круга над контроллером представления и перетащите его на контроллер представления назначения, чтобы создать переход. Create segue Выберите переход и дайте ему идентификатор Give your segue an identifier

Теперь вы можете вызвать performSegue(withIdentifier:sender:) в вашем первом контроллере представления для программной передачи. В вашем случае поставьте

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

в вашем обработчике действия строки сделает свое дело.

0 голосов
/ 27 марта 2019

Программно.

Создайте файл 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)

с раскадровкой

Добавьте viewController с идентификатором down и запишите этот код в действииобработчик

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