2014-10-04 2 views
-2

Я новичок в iOS, и я пытаюсь понять, как работает платформа, поэтому извините меня, если я сделаю какие-то глупые вопросы.Наследование зрения

Мой вопрос основывается на проблемы в настоящее время этот пост:
Inheritance on view controller Objective c

До сих пор, я понимаю, я могу наследовать контроллеры, но я могу унаследовать вид? Я думаю, что ответ НЕТ. Если это так, то каков наилучший способ решить следующую проблему?

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

Поэтому я хочу повторно использовать код и иметь главный контроллер и 2 унаследованных контроллера, которые переопределяют создание колоды. Теперь мне нужно иметь 2 разных вида, потому что в двух играх есть разное количество карт. Итак, каков наилучший способ сделать это? Должен ли я скопировать все элементы управления из одного вида в другое и изменить то, что нужно?

+1

У вас, по-видимому, есть некоторые существенные заблуждения. UIView - это класс. UIViewController - это класс. UIButton - это класс, который является подклассом UIControl, который является подклассом UIView. Наследование класса определяет функцию класса и функции, которые он имеет с другими аналогичными классами. Inheritance does * not * определяет способ размещения некоторых представлений в других представлениях для создания более сложной структуры представления. –

+0

(На типичном экране iPhone будет возможно 50 просмотров. Каждый ярлык представляет собой отдельный вид, каждое изображение представляет собой отдельный вид, каждая кнопка представляет собой отдельный вид, и есть «контейнерные» виды, которые содержат другие виды. см. на экране (и многое, чего у вас нет) - это представление.) –

+0

Спасибо за объяснение, не зная платформы, и я хотел убедиться, что нет механизма для обмена некоторой частью представления. Поэтому, если я хочу сделать представление, похожее на другое, единственный способ для меня скопировать это представление для создания нового ... это правильно? – TZAU

ответ

0

Вы можете наследовать вид просто отлично. Просто создайте подкласс UIView при добавлении нового файла и затем импортируйте этот подкласс.

Что касается вашего вопроса, то я чувствую, как наилучшим образом подойти к нему будет иметь подкласс UIViewController называется что-то вроде CardsController, который имеет свойство палубы и может управлять отображением и изменения карт на основе набора правил, определенного тобой. Затем, подкласс, который контролирует контроллер для каждой из ваших двух игр, поскольку они оба используют карты.

+0

Я не уверен, что понимаю ваш ответ ... (пожалуйста, поправьте меня, если я ошибаюсь). У меня есть вид в моей Main.storyboard и двух разных контроллерах для двух разных карточных карт, один наследует другой ... проблема в том, что у меня есть только один вид, а на вкладке «Пользовательский класс» в Xcode я могу выбрать только контроллер ... это правильно? Итак, вы предлагаете, чтобы представление было только одним, но тогда я должен контролировать видимость кнопок/элементов в контроллере? – TZAU

0

Вы можете подкласс любого типа объекта, контроллеры, представления, независимо от например:

@interface MyCustomView : UIView 

@end 

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

+0

Хорошо, может быть, я ошибся и теперь запутался, но это не код в контроллере, а не вид? не имеет ли представление только объекты макета?У меня есть главный контроллер, у которого есть весь код, а затем я создал новый контроллер, который наследуется от основного контроллера и переопределяет некоторые абстрактные методы ... теперь я не понимаю, что является следующим шагом, чтобы иметь другое представление для моего унаследованного controller ... – TZAU

+0

Когда вы создаете 'UIViewController', у него есть представление, но вы можете добавить Subviews к нему или изменить его каким-либо образом. Вы можете создать новый класс, который наследуется от 'UIView', и добавить это новое представление в качестве подсмотра главного представления' UIViewController' – saky

Смежные вопросы