Обязательно вернитесь в основной поток после получения результата от API. Сетевые вызовы - это асинхронные задачи, выполняемые в другом потоке, и, поскольку вам нужно выполнить какое-либо действие, связанное с пользовательским интерфейсом, в основном потоке, вам нужно сделать это (Objective-C):
dispatch_async(dispatch_get_main_queue(), ^{
// Perform your transition here.
});
Вам также необходимо убедиться, что контроллер представления, который выполняет переход, вставляется в UINavigationController!