При стартиране на приложението ми, то програмно показва LoginViewController, използвайки segue. Контролерът за изглед е представен модално с преход, настроен на кръстосано разтваряне. При успешно удостоверяване искам да отхвърля изгледа за влизане чрез програмно задействане на отпускане. Така че добавих това към моя заглавен файл:
- (IBAction)unwindSegue:(UIStoryboardSegue *)segue;
сега в IB мога да контролирам-плъзгам от „Собственик на файл“ LoginViewController до бутона Изход и избирам unwindSegue:
. Това създава ръчно преминаване, което се показва правилно в инспекторите за връзки за собственика на файла и бутона за изход. След това щраквам върху новосъздадения Unwind segue от сцената в IB и след това му давам име. Ако щракна върху бутона „отидете на“ за действието unwind segue, това ме отвежда до декларацията, спомената по-горе.
Дотук добре, след това задействам този преход при успешно удостоверяване в моя GCD блок:
....
dispatch_async(dispatch_get_main_queue(), ^
{
[self performSegueWithIdentifier:@"UnwindSegueIdentifier" sender:self];
[self.spinner removeFromSuperview];
self.spinner = nil;
});
..... и нищо не се случва, когато работи. Спинърът наистина се отстранява правилно, но няма признаци за изпълнение на секцията за отвиване.
Точка на прекъсване в изпълнението на unwindSegue:
никога не се достига. Няма хвърлени грешки. Нищо не се записва в конзолата. Идентификаторът е правилен, проверих три пъти (в противен случай така или иначе ще се провали).
Разгледах отговорите тук, тук и тук, но не изглежда да съм пропуснал нищо.
Това, което обаче забелязах, е, че Xcode смята, че unwindSegue:
е не свързан:
Не мога да плъзна от малкото празно кръгче пред unwindSegue:
и да го свържа с бутона за изход.
Всяка помощ ще бъде оценена.