Swift 5, как лучше использовать обработчик завершения в uialertController? - PullRequest
0 голосов
/ 18 апреля 2019

Немного разъяснений по поводу закрытия и конкуренции Хандлера по поводу предупреждений. что лучше использовать здесь? как, если я должен, использовать «действие» во втором случае? результат, кажется, тот же, он работает, но я хотел бы лучше понять, ПОЧЕМУ.

import UIKit

struct exapleStruct {
    var inHotel = true
}

class ViewController : UIViewController {

    var exapleStruct : exapleStruct!
    var detailTable: UITableView!

    override func viewDidLoad() {
        super.viewDidLoad()


        let myAlertController = UIAlertController(title: "Add or Change value", message: "", preferredStyle: .alert)

        //firstExample
        let booleanChange = UIAlertAction(title: "change", style: .default, handler: self.handlerForBool)
        //second exampple how shoukld I use "action" ?? why is it there?
        let booleanChange2 = UIAlertAction(title: "change", style: .default) { (action) in
            print(self.exapleStruct.inHotel)
            self.detailTable.reloadData()
        }


        myAlertController.addAction(booleanChange)
        present(myAlertController, animated: true, completion: nil)

    }

func handlerForBool(alertARgument: UIAlertAction!) {
    print(exapleStruct.inHotel)
    self.detailTable.reloadData()
}


}

1 Ответ

0 голосов
/ 18 апреля 2019

Используя это

let booleanChange2 = UIAlertAction.init(title: "option1", style: .default, 
    handler: handlerForBool(alertARgument:))
let booleanChange3 = UIAlertAction.init(title: "option2", style: .default, 
    handler: handlerForBool(alertARgument:))

func handlerForBool(alertARgument: UIAlertAction!) {
    print(exapleStruct.inHotel)
    self.detailTable.reloadData()
}

полезно, когда вам нужно одно и то же действие для нескольких alertActions, это повторное использование функции

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...