Не удалось вставить новое выходное соединение: не удалось найти информацию для класса с именем

196

У меня возникла ошибка в Xcode, в которой говорилось, что информации о контроллере не было.

Невозможно вставить новое выходное соединение: не удалось найти информацию для класса с именем

Почему это происходит?

Изображение 61

  • 2
    Я думаю, что об этом уже спрашивали: stackoverflow.com/questions/17735182/…
  • 0
    Я просто вышел из Xcode, а затем снова открыл его. компилятор перезагрузит все файлы и сможет обнаружить искомый файл
Показать ещё 11 комментариев
Теги:
xcode
interface-builder
iboutlet

23 ответа

382
Лучший ответ

Вот некоторые вещи, которые могут исправить это (в порядке возрастания сложности):

  • Очистите проект (Продукт > Очистить)
  • Вручную вставить

    @IBOutlet weak var viewName: UIView!
    // or
    @IBAction func viewTapped(_ sender: Any) { }
    

    и перетащите его на него. (При необходимости измените тип.) (Идея из этого ответа. Пожалуйста, повысьте его.)

  • Полностью закройте Xcode и перезапустите проект.

  • Удалите папку "Производные данные" (перейдите в Xcode > Настройки > Местоположение и щелкните серой стрелкой по папке "Производные данные", а затем удалите папку проекта.)
  • Нажмите "Удалить" в классе, удалите ссылку (не "Переместить в корзину" ) и добавьте ее снова. (см. этот ответ)
  • 0
    не забудьте удалить класс на контроллере представления, чтобы эти шаги работали
  • 4
    Ни один из этих шагов не работал для меня в Xcode 8.3.2. Мне пришлось «Показать инспектора идентификации»> очистить поле «Класс» (выделите имя пользовательского класса и удалить)> повторно ввести имя класса в поле «Класс». Xcode автоматически заполнил имя класса. Затем я нажал Enter.
Показать ещё 4 комментария
97

Или, если ничего из вышеприведенного не работает, сначала введите имя выхода в файл @IBOutlet weak var headerHeightConstraint: NSLayoutConstraint!, а затем щелкните и перетащите из розетки в наконечник в переменную, которую вы только что создали программно. Он должен работать без каких-либо хлопот по очистке, сборке и удалению чего-либо.

  • 4
    часто более быстрое решение вместо того, чтобы тратить время на очистку, сборку и т. д. спасибо.
  • 1
    Очень хорошо, и как только вы сделаете это, автоматически начнет появляться, спасибо.
Показать ещё 5 комментариев
26

Просто выполните два следующих шага, чтобы избавиться от этой ошибки.

  • Очистить проект с помощью продуктa > clean
  • Запустите проект

Теперь попробуйте добавить действие или выход. Это.

Счастливое кодирование

  • 4
    Странно ... эти два простых шага помогли решить проблему и для меня. Поэтому я рекомендую сначала попробовать эти простые шаги :-)
  • 3
    Мне то же самое! Это единственное, что сработало!
13

Это ошибка в XCode, и я не знаю, почему они этого не исправляют. Вы должны закрыть XCode и снова открыть. Когда вы попытаетесь снова установить розетки, но на этот раз оставите кучу ENTERS перед тем, как сделать это. Вам не нужно ничего удалять или тратить свое время на другие варианты...

Это решит ваши проблемы.

10

Вот шаги, которые были решены для меня:

  • Удалить ссылку на класс из представления (раскадровка/xib) и сохранить;
  • Добавить имя класса снова и сохранить;
  • Очистка и сборка;

Готово!

  • 0
    Это было решение для меня! Спасибо! :)
8

У меня была такая же проблема. Я устал ниже решений, но не работал:

  • Clean Project (cmd + shift + k) и даже Clean Project Build (cmd + shift + alt + k)
  • Deleted Derived data и Module Cache content

Ниже обходной путь к этой проблеме:

  • Перейдите в файл исходного кода и напишите IBOutlet / IBAction вручную (желательно скопировать ссылку)

Изображение 1751

  1. Затем перейдите в файл раскадровки и откройте окно Utilites
  2. Перейти к Connection Inspector
  3. Затем подключите IBOutlet и IBAction, записанные в исходный файл с помощью Interface Builder.

Изображение 1752

  • 0
    Перетаскивание Outlets / Actions вообще не работало, но после того, как я сделал это вручную, все снова заработало.
  • 0
    это единственный, который работал на меня. Спасибо
Показать ещё 1 комментарий
6

Я решил эту проблему, программно создав ярлыки и текстовые поля, а затем Command-Dragged из маленьких пустых кругов слева от кода компонентам на Storyboard. Чтобы проиллюстрировать свою мысль: я написал @IBOutlet weak var HelloLabel: UILabel!, а затем нажал Command и перетащил код в компонент на раскадровке.

  • 0
    Это решение отлично сработало для меня! Помимо @IBOutlet weak var myButton: UIButton я использовал тот же процесс для настройки @IBAction func doSomething(_ sender: Any) { } а затем подключил эту функцию к UIButton на моей раскадровке. Спасибо, что поделились этим @KuboAndTwoStrings
3

Я просто ушел из Xcode, а затем снова открою его. компилятор будет перезагружать все файлы и может обнаружить файл, который вы ищете

3
  • Закройте проект, над которым вы работаете.
  • Удалить папку вашего проекта 【DerivedData】. (Эта папка может быть внутри вашей папке проекта или внутри ~/Library/Developer/Xcode/DerivedData/(ваш проект)/) или в другом месте, которое было настроено вами.
  • перезапустите проект.
2

Я нашел более легкое обходное решение, так как я эту ошибку можно найти на XCODE 9.

Шаг 1 перейдите к вашему диспетчеру просмотра и вручную напишите свойство, которое вы хотите подключить, как показано ниже, убедитесь, что вы используете следующий формат.

@IBOutlet weak var questionsStackView: UIStackView!

Шаг второй перейдите в свою раскадровку и подключите свой просмотр или что-то еще, что вы пытаетесь подключиться к свойству, созданному на шаге 1.

Вышеупомянутое позволит сэкономить время удаления и очистки полученных данных.

2

не нужно ничего удалять. Просто добавьте розетку вручную @IBoutlet weak var imageName: UIImageView! и подключите его к изображению, перетащив эту розетку на изображение. поэтому остальные элементы можно просто подключить

2

Для меня не работало ни одно из вышеперечисленных решений. Мне пришлось удалить контроллер представления, , который я скопировал и вставил снова в своем раскадровке, чтобы повторно использовать это. Затем я перетащил новый контроллер представления в раскадровку и каждую вещь получилось отлично:). Надеюсь, это поможет кому-то с той же проблемой.

2

Убедитесь, что у вас еще нет подключенной розетки в файле контроллера вашего вида. Я обнаружил, что так и сделал. После того, как я удалил его, у меня не было проблем.

2

Для меня это сработало, когда на правой вкладке > Локализация, я проверил английский флажок. Первоначально была проверена только Base. После этого у меня не было больше проблем. Надеюсь, это поможет!

2

В моем случае это был bc. Я выбрал новый файл UIViewController в IB, а затем попытался выполнить ctrl-drag на этот новый контроллер без предварительного удаления предыдущих подключений в инспекторе соединений. Удалите их и повторите попытку.

1

Я получил эту ошибку, когда переименовал класс. Затем я решил это, выполнив следующие шаги

  • В меню Xcode → ProductClean
  • Restart Xcode
0

Ничего из этого не сработало для меня, но я понял это.

Внутри раскадровки я скопировал соответствующий ViewController в буфер обмена и удалил его, после чего я снова вставил его.

Неожиданно все снова работало как шарм!

0

Что сработало для меня, так это удалить ссылку на выход из раскадровки в файл .swift.

Затем очистите и снова подключите розетку, и это сработало...

Не знаю, почему это сработало.

0

лучший способ решить эту проблему: попробуйте создать новый класс tableviewcell типа UITableViewCell и назначьте класс ячейки tableview этой ячейке tableview, а затем очистите ваш проект, после этого вы не получите эту ошибку.

0

Просто перезапустил XCode и больше не получил ошибку. Для меня это произошло, когда я переименовал класс

0

У меня была такая же точная проблема. Убедитесь, что ячейки имеют идентификатор повторного использования. Представления таблиц с использованием динамических прототипов требуют, чтобы ячейки имели идентификатор повторного использования. Надеюсь, что это решает вашу проблему, как и моя:)

0

Я использовал xCode 7 и iOS 9.

в вашем .m

удалить #import "VC.h"

сохранить .m и снова подключить ваш выход, он отлично работает.

в вашем .m

добавить #import "VC.h"

сохранить .m

0

Самое простое решение: - Я использовал xCode 7 и iOS 9.

в вашем .m

удалить #import "VC.h"

сохранить .m и снова подключить ваш выход, он отлично работает.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню