Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Программирование iOS/iPhone

Войти
Регистрация
Восстановить пароль
 
dr_OX
0 / 0 / 0
Регистрация: 09.07.2013
Сообщений: 12
#1

Наследование класса, созданного в storyboard - Программирование iOS

22.09.2013, 15:20. Просмотров 771. Ответов 6
Метки нет (Все метки)

Добрый день. Возник вопрос с наследованием.
Есть приложение с двумя вкладками. На одной вкладке лежит коллекция А. Нужно на вторую вкладку повесить Коллекцию В, которая должна наследоваться от первой (А).

Кто-нибудь подскажет как это сделать?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.09.2013, 15:20
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Наследование класса, созданного в storyboard (Программирование iOS):

Xib вайлы и storyboard - Программирование iOS
Всем доброго времени суток. Хотелось бы по подробнее узнать о xib файлах и storyboard. Все что я об этом знаю - это то, что storyboard...

Портирование в Xcode5, фокусы Storyboard - Программирование iOS
Всем привет! Являюсь жертвой популярной, как я могу судить по различным форумам, фишки уезжания вьюшек при переносе проекта в новый...

Обновление XCode -> тормоза в StoryBoard - Программирование iOS
Всем привет! В первый же день выхода обновления XCode 5.0 - поставил новую версию, и моментально появились жестокие тормоза в...

как связать ViewController со Storyboard - Программирование iOS
Помогите пожалуйста связать ViewController с Storyboard. Создала iOS Empty Project. Подключила следующие frameworks: ...

Как вывести Label без Storyboard? - Swift
Добрый день! Недавно начал изучать Swift и узнал, что можно задавать параметры (например для Label) программно, т.е. без Storyboard ...

Различия в storyboard, симуляторе и на тестируемом телефоне - Программирование iOS
Всем привет! Столкнулся с такой проблемой: Был storyboard с локализациями. Я взял и удалил все локализации и хотел сделать их по...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
mobidevelop
182 / 182 / 3
Регистрация: 10.01.2013
Сообщений: 596
22.09.2013, 15:23 #2
В сториборде, в параметрах контроллера можно указать его тип.
1
dr_OX
0 / 0 / 0
Регистрация: 09.07.2013
Сообщений: 12
22.09.2013, 15:49  [ТС] #3
Цитата Сообщение от mobidevelop Посмотреть сообщение
В сториборде, в параметрах контроллера можно указать его тип.
В Custom Class? Так там у меня ссылка на текущий класс В. При тестировании выдаёт исключение:
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'UICollectionView must be initialized with a non-nil layout parameter'
В сториборде у меня пустой контроллер, потому как я хочу, чтобы содержимое (а конкретно - коллекция) бралось из класса-родителя.
Как тут быть?
0
mobidevelop
182 / 182 / 3
Регистрация: 10.01.2013
Сообщений: 596
22.09.2013, 15:55 #4
Ну если первый контроллер - UICollectionView. То и второй (его наследник) от этого никак не избавится. Гены-с. А значит, ему тоже Layout нужен. Хоть какой-нибудь.
0
dr_OX
0 / 0 / 0
Регистрация: 09.07.2013
Сообщений: 12
22.09.2013, 16:07  [ТС] #5
Цитата Сообщение от mobidevelop Посмотреть сообщение
Ну если первый контроллер - UICollectionView. То и второй (его наследник) от этого никак не избавится. Гены-с. А значит, ему тоже Layout нужен. Хоть какой-нибудь.
Так в классе-родителе есть всё, что нужно.
Загвоздка видимо в том, что при инициализации наследника, родитель инициализируется не своим кодером, а из наследника:

Objective-C
1
2
3
4
5
6
7
8
9
- (id)initWithCoder:(NSCoder *)aDecoder
{
    self = [super initWithCoder:aDecoder];
    
    if (self) {
        // Custom initialization
    }
    return self;
}
Можно ли как-то туда впихнуть нужный кодер, который ссылается на родительский интерфейс, и как это сделать?
0
mobidevelop
182 / 182 / 3
Регистрация: 10.01.2013
Сообщений: 596
22.09.2013, 16:25 #6
Угадываю. Layout для первого контроллера прописан в сториборде, а не в коде. Layout для второго контроллера не прописан нигде.
Рассказываю. Контроллер строится из тех объектов, которые нарисованы на его окошке. Отчего бы он ни наследовался. Если успели пощупать ксибки - поймете почему. Если нет - просто поверьте, а поймете потом.
Советую. Положить на окошко второго контроллера еще один Layout и связать его со вторым контроллером. Если хочется сделать это один раз - связывание осуществлять в коде первого контроллера. viewDidLoad - самое подходящее место.

PS.
Даю справку. Птица секретарь отличается умом и сообразительностью.
0
dr_OX
0 / 0 / 0
Регистрация: 09.07.2013
Сообщений: 12
22.09.2013, 17:11  [ТС] #7
Цитата Сообщение от mobidevelop Посмотреть сообщение
Угадываю. Layout для первого контроллера прописан в сториборде, а не в коде. Layout для второго контроллера не прописан нигде.
Верно.

Цитата Сообщение от mobidevelop Посмотреть сообщение
Рассказываю. Контроллер строится из тех объектов, которые нарисованы на его окошке. Отчего бы он ни наследовался. Если успели пощупать ксибки - поймете почему. Если нет - просто поверьте, а поймете потом.
Вот этого я ранее не знал, но заподозрил позже. Я ведь изначально хотел с класса А стянуть не только функционал, прописанный в коде, но и визуальное оформление.
Выходит, это невозможно реализовать наследованием, а только посредством композиции, которая тоже не очень подходит.

Цитата Сообщение от mobidevelop Посмотреть сообщение
Советую. Положить на окошко второго контроллера еще один Layout и связать его со вторым контроллером.
Пробовал. А что толку, если в виду вышесказанного всё остальное там пусто.

Цитата Сообщение от mobidevelop Посмотреть сообщение
Если хочется сделать это один раз - связывание осуществлять в коде первого контроллера. viewDidLoad - самое подходящее место.
А тут у вышесказанному прибавляется ещё и то, что Layout указывается только при инициализации, а далее он - read-only.

Благодарю за ответы.

Выходит, что если использовать наследование, то придётся в сториборде тупо скопировать содержимое первого контроллера и вставить во второй, а код должен отнаследоваться.
А можно ли из родителя как-то создать компонент, который бы отображался с библиотеке наравне с коробочными?
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.09.2013, 17:11
Привет! Вот еще темы с ответами:

Создание приложения без использования Storyboard - Программирование iOS
Здравствуйте, дано задание (в названии). Совсем новичок в этой теме. Есть ли туториалы, как это делать (добавлять различные элементы, как...

Интерфейс без Storyboard для новичка - Программирование iOS
Добрый день! Находясь сейчас в самом начале своего пути iOS-разработчика, просматриваю довольно много разных уроков, статей, и вижу,...

Storyboard и корректная отработка смены ориентации (Mono) - Программирование iOS
Здравствуйте. Пишу свой первый проект под iOS в xamarin studio. В проекте есть сториборд и 9 Вьюконтроллеров, для каждого уже прописан...

Как создать переход на Split View Controller (Storyboard) - Программирование iOS
Уважаемые форумчане! Я пишу программу для iPad, где необходимо совершить переход с ViewController на SplitViewController, ну или любым...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
22.09.2013, 17:11
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru