Невозможно подключиться @IBSegueAction - PullRequest
0 голосов
/ 14 июня 2019

У меня один контроллер вида с UIButton, содержащий следующий код:

import UIKit

class ViewController: UIViewController {

    required init?(coder: NSCoder) {
        super.init(coder: coder)
    }


    @IBSegueAction
    func makeAnotherController(coder: NSCoder, sender: Any?, segueIdentifier: String?) -> ViewController? {
        return ViewController(coder: coder)
    }
}

Согласно документации Apple , это правильная подпись для @IBSegueAction, и она компилируется нормально, но я не могу подключить кнопку к @IBSegueAction путем перетаскивания из сцены раскадровки помощнику редактора.

Я могу без проблем подключиться к другим точкам или действиям.

Есть мысли? Ошибка Xcode 11 или я что-то не так делаю?


Обновление

Вкратце, в документах Apple говорится…

Создайте соединение от segue к методу @IBSegueAction на его контроллере представления источника. В новых версиях ОС, которые поддерживают Segue Actions, этот метод будет называться ... Метод IBSegueAction принимает до трех параметров: кодер, отправитель и идентификатор segue. Первый параметр обязателен, а другие параметры могут быть опущены в сигнатуре вашего метода, если это необходимо

Я не могу выполнить первый шаг (создать соединение)

1 Ответ

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

Создание соединения с помощью перетаскивания еще не работает, но вы можете достичь того же самого вручную:

Перетащите с кнопки на контроллер вида назначения, выбрав любой вид перехода, который вы хотите. Затем выберите переход, просмотрите свойства - в поле селектора введите формат селектора ObjC для вашего метода Swift (компилятор сгенерирует этот метод-обертку для вас). Например. для func makeAnotherController(coder: NSCoder, sender: Any?, segueIdentifier: String?) селектор ObjC будет: makeAnotherControllerWithCoder:sender:segueIdentifier: заметить добавленное «с».

enter image description here

...