2013-09-04 1 views
1

Я только понял, что использование Storyboards с UITableViewController с 2 статическими ячейками, выполняющими модальный сегмент для отображения 2 разных UIViewControllers, фактически создает каждый раз новый экземпляр этих контроллеров представлений при каждом вызове метода initWithCoder: (а затем, конечно, viewDidLoad) , Я всегда думал, что те же самые экземпляры были использованы, и initWithCoder: был вызван только один раз для класса контроллера класса.UIStoryboard создает экземпляр нового объекта UIViewController каждый раз, когда выполняется segue?

Может кто-то подтвердить, что это правильное поведение? Я не использую ничего необычного, даже не готовятForSegue:

Есть ли способ избежать этого?

+1

Да, это нормально. «Модальные» взгляды имеют тенденцию быть временными, и когда их отклоняют, они отбрасываются. Там не должно быть необходимости его избегать? –

+0

Спасибо, это хороший момент. –

ответ

2

Это поведение «по дизайну» в текущей версии iOS (я подтвердил это с помощью 2 инженеров Apple на WWDC 13), но его можно было изменить в будущем обновлении. Невозможно избежать этого, о котором я знаю при использовании раскадровки. Если вы вернетесь к xib для каждого контроллера, вы можете сами управлять кешированием.