Почему UISwitch виден, только если я переименую класс?

У меня был класс с именем OptionsTableViewController, который наследовал UITableViewController. Я изменил суперкласс на UIViewController, реализующий протоколы UITableViewDelegate и UITableViewDataSource, поскольку мне нужно, чтобы tableView находился в определенной позиции.

Теперь некоторые ячейки таблицы имеют UISwitch в качестве аксессуара. Переключатель — это переменная экземпляра, инициализированная с помощью CGRectZero.

При изменении суперкласса на UIViewController переключатели не отображаются. Но когда я также переименовываю класс (в OptionsViewController например), он работает.

Кто-нибудь знает, откуда такое странное поведение? Я также пытался очистить проект и даже удалил папку сборки, но, похоже, единственное решение - переименовать класс.

Раньше у меня была похожая проблема, когда все табличное представление не отображалось, если только класс не был переименован.


person marikaner    schedule 28.08.2010    source источник
comment
Вы уверены, что accessoryView установлен правильно? Можете ли вы успешно зарегистрировать все дополнительные представления, чтобы увидеть, действительно ли они установлены? Это действительно не может быть из-за названия класса, должно быть что-то не так где-то.   -  person Joost    schedule 29.08.2010
comment
Вот как я устанавливаю AccessoryView: cell.accessoryView = _switch; где переключатель представляет собой переменную экземпляра, инициализированную следующим образом: _switch = [[UISwitch alloc] initWithFrame:CGRectZero]; Что вы подразумеваете под записью дополнительных представлений? Я установил точку останова, и приложение остановилось в этой точке. Так что команда точно выполняется. Я также пытался просто добавить переключатель в качестве подвида к представлению (не к табличному представлению), но это также не сработает. Я предполагаю, что имя класса используется где-то в проекте, но не в коде, который я написал.   -  person marikaner    schedule 29.08.2010


Ответы (2)


Проверяли ли вы, используются ли имена OptionsTableViewController и OptionsViewController где-либо еще во всем вашем проекте, в том числе в файлах пера интерфейсного построителя? Вы изменили все имена, как положено?

person hotpaw2    schedule 28.08.2010
comment
Я использовал параметр Refactor... XCode, и кажется, что нет другого появления OptionsTableViewController (кроме комментариев) - я использовал Edit -> Find -> Find in Project Feature, чтобы проверить на том. Я также удалил файл пера, так как я его не использую. - person marikaner; 29.08.2010

Я нашел причину этой проблемы. Хотя при поиске в проекте XCode не нашел файлов с именем OptionsTableViewController, я нашел его включенным в Targets -> AppName. Файл не исчезнет после очистки всех целей, поэтому полезно знать, что там все еще остаются части.

person marikaner    schedule 02.10.2010