Можно ли переопределить раскадровку по умолчанию?

У меня вопрос по поводу раскадровки, а именно я давно пользуюсь раскадровкой и до сих пор все было нормально. Я хочу переопределить метод (id)instantiateViewControllerWithIdentifier:(NSString *)identifier из класса раскадровки. Я знаю, что должен добавить подкласс класса UIStoryboard, но я не знаю, как указать приложению, что оно должно использовать этот подкласс? Я знаю, что могу сделать это программно (выделить экземпляр объекта этого подкласса и получить контроллер представления), но мне интересно - можно ли сказать Xcode, что мой e.q. Класс файла MainStoryboard.storyboard следует рассматривать как мой подкласс.


person lwalukie    schedule 19.04.2014    source источник
comment
Это не мой случай. Я хочу переопределить метод (id)instantiateViewControllerWithIdentifier:(NSString *)identifier из раскадровки, и я хочу, чтобы он вызывался каждый раз, когда создается экземпляр контроллера просмотра из раскадровки. Наконец, я хочу, чтобы UIStoryboard по умолчанию, который используется во время выполнения, был тем, который я создал (мой подкласс UIStoryboard) - и это так.   -  person lwalukie    schedule 21.04.2014


Ответы (1)


Да, ты можешь. Лучший способ — создать подкласс UIStoryboard и программно создать экземпляр вашей раскадровки в AppDelegate.

Если вы не хотите создавать раскадровку в AppDelegate, вы можете использовать смену методов — замените реализации методов UIStoryboard своими собственными (см. заголовок objc/runtime.h и документы Apple ).

Но я думаю, что явное создание раскадровки лучше, чем волшебное время выполнения — это понятно всем, кто читает ваш код.

person Aleksey    schedule 22.04.2014
comment
Спасибо, я использовал пример, который вы мне указали здесь: > stackoverflow.com/questions/18998759/ - person lwalukie; 24.04.2014