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

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

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

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

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

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

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

как связать ViewController со Storyboard
Иерархия StoryBoard Objective-C
Интерфейс без Storyboard для новичка
Обновление XCode -> тормоза в StoryBoard
Портирование в Xcode5, фокусы Storyboard
Objective-C StoryBoard vs View
Xib вайлы и storyboard
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
mobidevelop
182 / 182 / 3
Регистрация: 10.01.2013
Сообщений: 596
22.09.2013, 15:23     Наследование класса, созданного в storyboard #2
В сториборде, в параметрах контроллера можно указать его тип.
dr_OX
0 / 0 / 0
Регистрация: 09.07.2013
Сообщений: 12
22.09.2013, 15:49  [ТС]     Наследование класса, созданного в storyboard #3
Цитата Сообщение от mobidevelop Посмотреть сообщение
В сториборде, в параметрах контроллера можно указать его тип.
В Custom Class? Так там у меня ссылка на текущий класс В. При тестировании выдаёт исключение:
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'UICollectionView must be initialized with a non-nil layout parameter'
В сториборде у меня пустой контроллер, потому как я хочу, чтобы содержимое (а конкретно - коллекция) бралось из класса-родителя.
Как тут быть?
mobidevelop
182 / 182 / 3
Регистрация: 10.01.2013
Сообщений: 596
22.09.2013, 15:55     Наследование класса, созданного в storyboard #4
Ну если первый контроллер - UICollectionView. То и второй (его наследник) от этого никак не избавится. Гены-с. А значит, ему тоже Layout нужен. Хоть какой-нибудь.
dr_OX
0 / 0 / 0
Регистрация: 09.07.2013
Сообщений: 12
22.09.2013, 16:07  [ТС]     Наследование класса, созданного в storyboard #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;
}
Можно ли как-то туда впихнуть нужный кодер, который ссылается на родительский интерфейс, и как это сделать?
mobidevelop
182 / 182 / 3
Регистрация: 10.01.2013
Сообщений: 596
22.09.2013, 16:25     Наследование класса, созданного в storyboard #6
Угадываю. Layout для первого контроллера прописан в сториборде, а не в коде. Layout для второго контроллера не прописан нигде.
Рассказываю. Контроллер строится из тех объектов, которые нарисованы на его окошке. Отчего бы он ни наследовался. Если успели пощупать ксибки - поймете почему. Если нет - просто поверьте, а поймете потом.
Советую. Положить на окошко второго контроллера еще один Layout и связать его со вторым контроллером. Если хочется сделать это один раз - связывание осуществлять в коде первого контроллера. viewDidLoad - самое подходящее место.

PS.
Даю справку. Птица секретарь отличается умом и сообразительностью.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.09.2013, 17:11     Наследование класса, созданного в storyboard
Еще ссылки по теме:

Objective-C Не привязываются действия к пересозданному storyBoard
Различия в storyboard, симуляторе и на тестируемом телефоне
Objective-C MVC storyboard+ViewController
Загрузка ViewController из xib в storyboard Objective-C
Swift Как вывести Label без Storyboard?

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

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

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

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

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

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

Выходит, что если использовать наследование, то придётся в сториборде тупо скопировать содержимое первого контроллера и вставить во второй, а код должен отнаследоваться.
А можно ли из родителя как-то создать компонент, который бы отображался с библиотеке наравне с коробочными?
Yandex
Объявления
22.09.2013, 17:11     Наследование класса, созданного в storyboard
Ответ Создать тему
Опции темы

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