Подключение UILabel к IBOutlet вызывает сбой - PullRequest
7 голосов
/ 29 октября 2009

У меня есть UIViewController, который я загружаю из xib-файла и помещаю в стек контроллера навигации.

В заголовочном файле для View Controller у меня есть:

IBOutlet UILabel *myTitle;

Я пока ничего не делаю с "myTitle" в коде; Я просто настраивал соединения.

Когда я компилирую и запускаю приложение, и в xib-файле не определены метки (и, следовательно, ничего не прикреплено к IBOutlet), оно работает. Контроллер представления отлично отображает изображение, показывая представление, которое я построил в Интерфейсном конструкторе.

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

Но если я подключаю IBOutlet myTitle к метке в построителе интерфейса, перекомпилирую и запускаю приложение, оно работает нормально, пока я не попытаюсь вставить контроллер представления в стек контроллера навигации, и в этот момент я получаю сбой:

*** -[UILabel copyWithZone:]: unrecognized selector sent to instance 0x4558e20

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

Разве я не должен добавлять IBOutlet в UILabel или что-то в этом роде? Или что-то еще происходит? Любые предложения о том, где искать проблемы?

Ответы [ 4 ]

9 голосов
/ 24 марта 2010

Да, это может быть вызвано неправильным именем параметра, например, попробуйте это:

IBOutlet UILabel title;

и это вызовет исключение, подобное этому:

Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[UILabel copyWithZone:]: unrecognized selector sent to instance 0x143f520'
6 голосов
/ 29 октября 2009

Вы создали аксессор для своего IBOutlet?

@property (assign) IBOutlet UILabel *myTitle;

А потом, в вашем .m файле

@synthesize myTitle
5 голосов
/ 31 января 2012

У меня была такая же проблема. Оказывается * заголовок зарезервирован, и XCode не говорит вам этого. Однажды я переименовал его во что-то еще, и это сработало.

1 голос
/ 20 марта 2012

В моем случае у меня был UILabel в UIToolBar. Для меня это исправило удаление панели инструментов и добавление новой с новой UILabel. ИБ ошибка.

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