Я выполняю segue для контроллера вида, для которого требуется инициализация. В настоящее время инициализация происходит в ViewDidLoad контроллера целевого представления. Однако инициализация довольно длинная, и я хотел бы показать счетчик, пока это происходит.Инициализация ViewController перед Segue
Если я создаю UIActivityIndicatorView в ViewDidLoad и запустил инициализацию в другом потоке, то, конечно, выйдет ViewDidLoad и остальная часть процесса загрузки - в частности, будет вызван toAutorotate, и это содержит код, предполагающий, что процесс инициализации произошел. (Даже если это не так, я не хочу показывать целевое представление до его инициализации.)
Ответ, похоже, заключается в инициализации контроллера целевого представления перед вызовом segue. Однако я не могу этого сделать в prepareForSegue в контроллере вызывающего вида по той же причине - он выходит и вызывается вызов до того, как произошла инициализация.
Так что мне, кажется, нужно создать экземпляр целевого контроллера, инициализировать его, а затем выполнить segue с инициализированным контроллером в качестве адресата. Моя проблема в том, что я не знаю, как это сделать. Единственный возможный способ, с которым я столкнулся, - подкласс UIStoryboardSegue и поместить инициализацию в init для подкласса. Тогда я полагаю, что я звоню
UIStoryboardSegue * segue = [[SubclassedSegue alloc]initWithIdentifier:@"??what should this be??" source:self destination:targetViewContoller];
[segue perform]; // which just calls [super perform];
от контроллера вида источника. Это верно? Может ли кто-нибудь, пожалуйста, показать мне примерный код, который использует этот процесс, или, желательно, более простой способ, о котором я не думал? Я не могу не думать, что должен быть более простой способ показать прядильщик.
Благодарим за помощь.
+1: это тоже способ :) Я бы сохранил индикатор загрузки на целевом VC, но это то, о чем попросил OP (все еще не думаю, что это хорошо: D) –
да, я тоже был немного удивлен, почему initing destVC из источника. –
Спасибо - так что мы просто используем presentViewController и вообще не используем segue? [Примечание. Я изначально выполнял инициализацию в целевом VC, но пока он не будет инициализирован (пока показывается счетчик), это будет просто пустой экран. Кроме того, как я уже сказал, есть код в shouldAutoRotate, который вызовет сбой, если он вызывается до инициализации, что будет, если представление будет показано слишком рано.] –