Использование проекта, созданного по умолчанию для tab-controller ... контроллер первого вида не отвечает - PullRequest
0 голосов
/ 08 ноября 2008

Я создал проект, используя проект по умолчанию для контроллера вкладок. Я использую конструктор интерфейса для редактирования файла .xib и добавления изображений и кнопок. Я подключаю их к объекту FirstViewController в построителе интерфейса (который я создал и устанавливаю его класс таким же, как и файл кода). Я подключил все, используя IBoutlets и IBActions.

Все работало нормально, но затем я сделал некоторые изменения в конструкторе интерфейса (добавил UILabel), и теперь метод, который запускается при нажатии (я пробежал по нему с помощью отладчика), имеет строку, которая добавляет подпредставление к контроллер представления, и он действует так, как если бы он не был выполнен. Метод (и код выполняется) выполняется без ошибок (согласно отладчику), но представление просто не добавляется. Это произошло после того, как я сделал некоторые изменения через конструктор интерфейса.

Теперь, если я подключу свою кнопку к «Выбранному первому контроллеру вида», щелкнув соответствующую вкладку и перетащив IBOutlet на UILabel, эта метка теперь будет иметь несколько выходных ссылок. Теперь, если я делаю то же самое для кнопки, метод (IBAction) выполняется дважды, но фактически добавляется и отображается подпредставление. Но я получаю ошибку доступа к памяти, потому что мой метод IBAction (кнопка) обращается к свойству, которое что-то хранит. Я предполагаю, что это связано с каким-то образом созданием памяти в контроллере первого представления, но пытаться получить к нему доступ в выбранном контроллере первого просмотра? Если это имеет какой-то смысл?

Понятия не имею, почему это происходит и почему просто перестала работать просто кнопка. Я пытался объяснить эту проблему как можно лучше, это немного сбивает с толку. Но если у кого-то есть какие-либо советы или идеи, я хотел бы услышать, что вы, ребята, думаете об этой проблеме и как ее решить.

Ответы [ 2 ]

1 голос
/ 08 ноября 2008

Также звучит - и не стесняйтесь меня поправлять, если я ошибаюсь - что вы присоединяете действия в представлении, загруженном панелью вкладок, к контроллеру панели вкладок. Эти две сущности весьма различны, и любые данные, к которым вы хотите получить доступ из представления, должны ссылаться из контроллера представления, а не из контроллера панели вкладок (который должен выполнять довольно легкую работу по загрузке и выгрузке других ваших контроллеров представления). Точно так же вы не должны добавлять подпредставление в контроллер представления, оно не имеет представления о том, что делать с подпредставлением - вы должны использовать контроллер представления, чтобы добавить подпредставление в ваше представление. Хотя это кажется вопросом семантики, контроллер представления принципиально отличается от представления. Первый выполняет функции управления содержимым и поведением представления и реагирует на действия представления, где это необходимо, в то время как последний является просто механизмом отображения объекта на экране.

1 голос
/ 08 ноября 2008

Вы уверены, что первая розетка действительно подключена. Если вы называете розетку так, что она конфликтует с каким-либо другим свойством, которое устанавливается во время загрузки пера (через initWithCoder :), это может привести к тому, что все не будет правильно подключено. Вы можете проверить это, выполнив NSLog'ом значение точек в вашем awakeFromNib.

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