Понимание концепции UIviews и UIViewcontrollers - PullRequest
2 голосов
/ 02 октября 2010

Пару недель назад я начал свои исследования в области разработки приложений для Iphone, и после множества приложений hello world с различными настройками я теперь готов к своему самому первому приложению на основе шаблона проектирования MVC, используемого в Какао.Это открывает для меня множество вопросов, и после прочтения различных ссылок на классы о UIViews и контроллерах я застреваю в попытке выяснить, какой из них мне следует использовать.

В моем приложении я пытаюсь создатьсетка из маленьких прямоугольников с каждым прямоугольником, имеющим различное текстовое значение, чтобы быть более конкретным, я пытаюсь создать простой календарь, который будет отображать все дни месяца в сетке.Каждый прямоугольник является экземпляром класса i с именем Tile, в этом классе я хочу реализовать метод drawRect, чтобы нарисовать для меня прямоугольник и установить текстовое значение на день, который он должен представлять.

Для реализацииэто я сделал некоторые исследования о том, как это должно быть сделано.Из того, что я до сих пор узнал, является то, что контроллеры UIView на самом деле ничего не отображают, они в основном сидят там, ожидая, чтобы ответить на любые события от своих детей.В моем приложении я бы перевел это на контроллер, который будет реагировать на каждое касание на плитке.UIView, однако, также является контейнером, но для объектов, которые будут нуждаться в методах рисования, таких как drawRect.Это будет переводить в сетку, которая будет содержать все плитки, если я прав.За исключением того, что я понятия не имею, какой подкласс я должен использовать для каждой плитки, у меня такое ощущение, что мне действительно не хватает некоторых базовых знаний, но я просто не могу понять это.Был бы очень признателен, если бы кто-то мог указать мне в правильном направлении с этим.

Ответы [ 2 ]

2 голосов
/ 02 октября 2010

Если были какие-то два яблочных документа, которые вы должны прочитать, то это примерно UIViewController s, которые можно найти здесь , и тот, о UIView s, которые можно найти здесь.UIViewController, как вы упомянули, больше относится к интеграции с системой iOS, чем к тому, чтобы быть видимым компонентом.У него есть ссылка на UIView, и UIView является корневым узлом в видимом дереве элементов, которое начинается с этого View Controller.

В программировании на iOS вам не нужно беспокоиться орисование прямоугольников, потому что по большей части вы будете расширять элементы, которые умеют рисовать сами, а затем просто сообщать им, куда идти.Основным видимым элементом в этом случае является UIView.Существует много различных типов UIView (см. Рисунок в ссылке на руководство по программированию UIView), поэтому для вашего случая вы можете использовать простой UIView с фоновым изображением, установленным на графике вашего календаря, и добавить подпредставлениевведите UILabel.UILabel - это подкласс UIView, так что вы знаете, что это будет также что-то видимое.

Как только вы поймете эти понятия (что может занять много времени), Interface Builder начнет приобретать больше смыслаи вы можете начать делать некоторые из этих вещей с ним - и понять, как это работает.По сути, он создаст иерархию UIViewController, ссылающуюся на иерархию UIView s, а затем вы.

1 голос
/ 02 октября 2010

Tile должен быть подклассом UIView, так как вы хотите drawRect ваших "дней". Затем вы можете добавить столько плиток, сколько захотите, к своему UIViewController.view и манипулировать ими из кода UIViewController (файл .m).

Но вы можете добавить UILabels к вашему Tile представлению и манипулировать ими, установив их свойство text. В этом случае вам вообще не нужно будет переопределять drawRect:, UILabel сделает все остальное за вас, но вам придется программно добавить эти метки в Tile (например, в методе init Tile) или в Интерфейсном Разработчике. В последнем случае вам нужно будет загрузить их из XIB, используя метод [[NSBundle mainBundle] loadNib:owner:options:].

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