Свифт Вопрос о контроле segue и view - PullRequest
0 голосов
/ 22 апреля 2020

Я новичок в Swift и занимаюсь разработкой приложений для управления капиталом с использованием realm. Короче говоря, у меня есть parentV C, который показывает всю учетную запись в parentV C, и rightBarButton, который выполняет переход к AddAccV C, все вещи разобрались и успешно.

Однако, если пользователь хочет отредактировать определенный cellForRow в IndexPath, я должен создать еще один V C как EditAccV C или повторно использовать AddAccV C, поскольку для редактирования и добавления фактически используются те же поля и типы данных.

Если, скажем, я решил использовать обратно AddAccV C для данных модификации. Как мне его выполнить?

В настоящее время я использую rightBarButton для перехода к AddAccV C, чтобы добавить учетную запись. Если я должен был использовать AddAccV C, мне нужно будет выполнить переход из cellForRow к той же V C, что и выбранная учетная запись и используется кнопка сохранения для обновления изменений. Так что, если заявление требуется правильно? если да, можете ли вы провести мне пример, чтобы я мог больше узнать об этом исполнении?

1 Ответ

0 голосов
/ 22 апреля 2020

Я предлагаю объединить его в один и назовите что-то еще, что имеет смысл для вас, например «SaveAccountV C» или «UpsertAccountV C». Затем вы можете добавить к нему делегат / замыкание (обратный вызов), чтобы контролировать, что вы хотите делать с V C после завершения операции. Это пример внедрения функции обратного вызова.

SaveAccountViewController: UIViewController {
    // ...
    // properties
    var completionHandler: ((account: Account) -> Void)? //modify function to your needs
    var dimissHandler: (() -> Void)? //modify function to your needs
    // ...

    // sample function where the "save" operation is completed
    func onComplete() {
        var account = Account()
        // sample dismiss function using the view controller dismiss
        dismiss(animated: true, completion: { self?.completionHandler?(account: account) })
    }
    // ...
    // sample function where "exit" is called
    func onDismiss() {
        // sample dismiss function using the view controller dismiss
        dismiss(animated: true, completion: { self?.dismissHandler?() })
    }
}

YourViewController: UIViewController {
    // ...
    // your segue function
    func segue() {
        var viewController: SaveAccountViewController
        //... after getting the view controller
        // setting handlers are optional
        viewController.completionHandler = { account in
            // do something here
            print(account)
            print("I am completed")
        }
        viewController.dismissHandler = {
            // do something here
            print("I am dismissed")
        }
    }
}
...