Подтвердить что ты не робот

Невозможно подключить IBOutlet от раскадровки к подклассу UIView

Я могу щелкнуть правой кнопкой мыши и перетащить из моего пользовательского файла подкласса UIView в элементы раскадровки, чтобы соединить их, но не смог сделать это наоборот. Я считаю, что это ошибка Xcode. Есть ли что-нибудь, что я могу сделать, чтобы исправить это? Это уже не первый случай, когда это происходит уже и его раздражает.

Я уже пробовал очистить и перезапустить Xcode несколько раз без везения.

Это не работает Это не работает (щелчок правой кнопкой мыши от раскадровки до файла Swift)

Это работает Это работает (щелчок правой кнопкой мыши по быстрому файлу IBAction для раскадровки)

Btw, я использую Xcode 8.1 с Swift 3.0.

UPDATE: я не ищу ответа о том, как подключать IBOutlets/IBActions, потому что, как я уже упоминал выше (а также на скриншотах), я уже могу подключить их, и приложение работает нормально. Вопрос больше о WHY. Xcode не позволяет мне подключаться из Storyboard > Swift файла, но позволяет мне сделать это из файла Swift > Storyboard. Прошу прощения, если вопрос вводит в заблуждение.

4b9b3361

Ответ 1

Попробовав какое-то из данных решений, что в конечном итоге сработало, перезагрузив мой macbook. Это похоже на ошибку на стороне XCode. О, хорошо.

Ответ 2

Мы также иногда сталкиваемся с этой проблемой, начиная с Xcode 8, и предполагаем, что это ошибка Xcode.

В качестве обходного пути:

  • Напишите розетку в коде @IBOutlet weak var myUiElement: UIView!

  • Ctrl + Перетащите из вашей розетки в элемент пользовательского интерфейса в раскадровке

Ответ 3

Его основной, но легко упустить из виду. Убедитесь, что контроллер представления, на который вы перетаскиваете розетку, помечен как созданный вами пользовательский класс.

enter image description here

Ответ 4

Создайте такую ​​розетку в Objective-C

@property (nonatomic, weak) IBOutlet UIView *view;

или как в быстрой 3

@IBOutlet weak var instruction: UILabel?

а затем соедините его, как показано на этом изображении.

введите описание изображения здесь

Иногда обычный способ подключения действия и выхода не работает из-за подкласса. Этот способ подходит для таких ситуаций.

Ответ 5

Что проверить, если IBOutlet не подключается:

  • Является ли класс определенным в раскадровке?

    Выберите UIViewController в storyboard, затем в правой части экрана выберите identity inspector и назначьте соответствующий класс.

  • Является ли тип розетки, который вы определили, соответствует типу storyboard? Например, мы подключаем UIButton, тогда выход должен выглядеть так, писать код для розетки, а затем подключаться к контроллеру вида:

    @IBOutlet weak var theButton: UIButton!
    

Ответ 6

Я решил свою проблему следующим образом.

  1. Соедините ваш вид раскадровки с любым другим ViewController.
  2. Теперь снова подключите нужный ViewController к раскадровке.

Надеюсь, это сработает для вас!

Ответ 7

Другой способ просто создать имя вашей кнопки вручную в диспетчере вида, как это -

@IBOutlet weak var button: UIButton!

затем подключите вашу кнопку с помощью перетаскивания, чтобы просмотреть контроллер, как показано на рисунке [! введите описание изображения здесь

PS: - пожалуйста, очистите также полученные производные данные.

Ответ 8

1: Назначьте класс viewController.

2: очистите проект с помощью Shift-Alt-Cmd-K.

3: Сначала закройте Xcode и очистите полученные данные. переход к: ~/Library/Разработчик/Xcode/DerivedData​​p >

Ответ 9

нажмите ctrl, а затем перетащите в быстрый файл и создайте выход.