Swift Continue Flow в TableView(didSelectRowAt IndexPath) след представяне на Alert Controller

Искам да представя UIAlertController, когато потребител докосне ред в tableView, когато condition не е равно на 1. След като предупреждението бъде отхвърлено, искам останалият код в didSelectRowAt IndexPath да се изпълни. Потокът обаче спира. Предполагам, че имам нужда от нещо различно от nil в completion:, но съм объркан.

Представям Alert Controller така:

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    if condition != 1 {
        let alertController = UIAlertController(title: "Title", message: "message", preferredStyle: .alert)

        let defaultAction = UIAlertAction(title: "OK", style: .default, handler: nil)
        alertController.addAction(defaultAction)
        present(alertController, animated: true, completion: nil)
        condition = 1
    }

    \\remaining code to be executed
}

person froggomad    schedule 19.08.2018    source източник
comment
Напишете оставащия код в манипулатора на действието за предупреждение.   -  person Adeel    schedule 19.08.2018


Отговори (1)


Можете да поставите кода за изпълнение в манипулатора на действие на defaultAction. Така кодът ще се изпълни след натискане на бутона ok. Ако го поставите в завършването на метода present(), той ще бъде изпълнен точно след представянето на предупреждението.

let alert = UIAlertController(title: "Hello", message: "Nai", preferredStyle: .alert)
    alert.addAction(UIAlertAction(title: "Ok", style: .default, handler: { (action) in
        print("Executed after ok tapped")
    }))
    present(alert, animated: true) {
        print("Executed when its presented")
    }
person JAHID HASAN POLASH    schedule 19.08.2018
comment
БЛАГОДАРЯ! Бях се опитал да обвия кода във функция и да го извикам по този начин, но го нямах в заграждение... - person froggomad; 20.08.2018