@IBSegueAction с условием - PullRequest
0 голосов
/ 23 июня 2019

В моем приложении я хочу выполнить переход на основе UITapGestureRecognizer.В случае, если касание находится в верхней части экрана, следует выполнить переход к просмотру настроек.

В UIKit это было довольно просто.Я запустил executeSegue в UITapGestureRecognizer, обернув его в оператор if.

Теперь я хотел бы написать SettingsView () в SwiftUI.SettingsView () будет встроен в UIHostingController.

Мой вопрос: как я могу выполнить переход к этому UIHostingController (сообщая UIHostingController, какой View отображать)?

Я пытался использовать новый @IBSegueAction.Причиной использования этого @IBSegueAction является то, что я могу использовать его, чтобы сообщить UIHostingController, какой View отображать.Проблема в том, что я не могу вставить условие сейчас.Везде, где касание находится на экране, выполняется переход.Я не нашел способа отменить переход в @ IBSegueAction.

Мой код в настоящее время выглядит так:

    @IBSegueAction func showSettingsHostingControler(_ coder: NSCoder, sender: UITapGestureRecognizer, segueIdentifier: String?) -> UIViewController? {

        let location = sender.location(in: self.tableView)
        if let _ = self.tableView.indexPathForRow(at: location) {
            return nil
        } else {
            if location.y < 32 {
                if location.x < view.bounds.midX {
                    direction = .left
                } else {
                    direction = .right
                }
                return UIHostingController(coder: coder, rootView: SettingsView())
            }
        }

        return nil
    }

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

1 Ответ

0 голосов
/ 23 июня 2019

на основе UITapGestureRecognizer.Если касание находится в верхней части экрана

Мне кажется, что ваш распознаватель жестов касания прикреплен к неправильному виду.Здесь не должно быть никакого решения.Разместите вид в верхней части экрана и прикрепите к нему распознаватель жестов касания.Таким образом, если этот вид получает касание, решение не принимается: касание находится в нужном месте.

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