Я ценю, что вы нашли время, чтобы прочитать это и, надеюсь, выручить меня!
Я пишу свою первую программу на Xcode 4, впервые используя Objective-C и Cocoa. Я следовал учебным пособиям, но на данный момент я хочу отображать пользовательскую графику, используя пользовательский вид, где графика изменяется в зависимости от значений в моем объекте модели.
Мой класс контроллера GameController, основанный на NSObject, создает объект моей модели во время инициализации и успешно получает сообщения о действиях кнопок, соответствующим образом обновляет объект модели и, в свою очередь, обновляет текстовые строки в окне, используя его выходы. Я достиг этого, создав объект NSObject в моем xib-файле (который называется именем MainMenu.xib по умолчанию (?), Но он включает в себя весь пользовательский интерфейс в моем приложении), используя панель утилит, чтобы установить его класс в GameController, и затем подключить его действия и выходы к соответствующим элементам пользовательского интерфейса.
Я перетащил пользовательское представление в свое окно и использовал панель утилит, чтобы установить его класс для моего пользовательского класса представления BoardView, который основан на NSView. В BoardView я переопределил drawRect: заполнить фон моего представления синим цветом, а затем нарисовать каждую графику, определенную моим классом модели (GameStatus).
Проблема в том, что я не знаю, как получить доступ к данным в GameStatus из моего класса BoardView, или чтобы GameController обновил переменную-член BoardView. Я не создавал экземпляр BoardView нигде, кроме как в Интерфейсном Разработчике, опуская собственное представление в моем окне. У меня нет объекта BoardView в моем xib-файле (столбец или список слева в Interface Builder).
Я попытался создать выход для объекта BoardView в моем классе GameController (у которого действительно есть объект в моей xib, как я уже упоминал выше) и подключил этот выход к настраиваемому представлению BoardView в моем окне, и мне показался, что Interface Builder хорошо с этим. Однако когда я запускаю программу, значение указателя выхода BoardView в моем классе GameController равно 0x0. Кажется, что розетка не подключена к объекту BoardView. Я не знаю, нужно ли мне делать что-то еще в Интерфейсном Разработчике, чтобы создать реальный объект (я попытался создать его в списке слева, но потом не смог найти способ подключить его к реальному отображаемому пользовательскому представлению). на окне).
Чтобы добавить к путанице, когда я запускаю свое приложение, область BoardView окна будет отображать синий фон и фактически любую другую графику, которую я определяю в функции drawRect :. Однако без какого-либо способа общения с моим объектом модели я не могу изменить графику в зависимости от состояния модели. Я не уверен, что тот факт, что жестко запрограммированная графика отображается правильно, означает, что где-то там есть объект, или он каким-то образом рисует, основываясь на общем шаблоне класса. Последнее на самом деле не имеет смысла для меня, но если первое верно, я не могу понять, как общаться с этим объектом из других частей моего кода.
Мне кажется, что мне просто не хватает базового понимания того, как Xcode / Interface Builder создает объекты или что-то в этом роде. Я был бы очень признателен, если бы кто-нибудь сказал мне, что именно мне здесь не хватает в связи между моими объектами / классами MVC.
Заранее благодарю за любую помощь, которую вы можете мне оказать!
РЕДАКТИРОВАТЬ 2011/09/06:
Чтобы скачать копию моего проекта и посмотреть его, перейдите по ссылке:
http://talix.homeip.net/2011/rival/
Это мой домашний сервер, и я любитель в этом, поэтому, пожалуйста, оставьте комментарий, если он не работает. Спасибо! Кроме того, если есть лучший способ ответить на комментарии, кроме редактирования моего исходного сообщения, пожалуйста, дайте мне знать; Я также новичок на этом сайте. ; -) * 1 021 *
-Joe