2016-12-02 4 views
8

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

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

This does not work Это не работает (Щелчок правой кнопки мыши по раскадровке Свифта файла)

This works Это работает (Щелчок правой кнопки мыши из IBAction Свифта файла раскадровка)

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

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

+0

да вы можете сделать первый выбор UILable Ctrl + Dreg с мышью подключить к быстрому файлу и создать IBOutlets и IBActions –

+0

попробовать первый Записывая IBOutlet, а затем, подключив его к соответствующему виду. –

+0

@NikhilManapure Да, это сработало. Но делать это наоборот. И что странно, так это то, что он отлично работает на моих других ViewControllers, а именно на этом конкретном UIView, что я не могу этого сделать. –

ответ

13

Мы часто видим эту проблему с Xcode 8 и считаем, что это ошибка Xcode.

В качестве временного решения:

  • Написать выход в коде @IBOutlet weak var myUiElement: UIView!

  • Ctr + Drag с вашего выхода на элемент пользовательского интерфейса в раскадровке

+0

У меня такая же проблема, но когда я делаю то, что вы описали, вары nil, когда я запускаю приложение. xcode показывает соединение, но я не думаю, что это действительно происходит, поскольку vars равны нулю. Я использую xcode 9, и я знаю, что это багги, как черт, но, возможно, IBOutlets не поддерживается в подклассах UIView. – u84six

-2

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

-1

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

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

3: Сначала закройте Xcode и очистите полученные данные. собирается: ~/Library/Developer/Xcode/DerivedData

+0

Его подкласс UIView, и я уже сделал все это без везения :( –

0

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

  1. ли класс, определенный в раскадровке?

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

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

    @IBOutlet weak var theButton: UIButton! 
    
2

Создать выход, как это в Objective-C

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

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

@IBOutlet weak var instruction: UILabel? 

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

enter image description here

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

-1

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

@IBOutlet weak var button: UIButton! 

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

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

0

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

+0

Даже перезагрузка не помогла мне ... – kelin

0

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

enter image description here

Смежные вопросы