Использование раскадровки для навигации по сложному набору представлений, раскрутки перехода недостаточно.

введите здесь описание изображенияУ меня есть раскадровка, похожая на прикрепленное изображение.

Идея состоит в том, что есть три портретных вида, показывающих текущее потребление, по которым пользователь может перемещаться, проводя пальцем влево. Для этого я использую распознаватель жестов смахивания влево. Затем я добавляю распознаватели жестов смахивания вправо и подключаюсь к переходу на раскрутку, чтобы вернуться назад. Это прекрасно работает.

Порядок такой: [и электричество, и газ] -> [электричество] -> [газ].

Каждый портретный вид имеет соответствующий подробный пейзажный вид. Они также настроены так, что пользователь может перемещаться, проводя пальцем по экрану, а я раскручиваю переходы, чтобы они могли проводить назад. Снова порядок [оба графика] -> [график электричества] -> [график газа].

Я также хочу, чтобы пользователь мог переходить от любого портретного вида к соответствующему подробному виду, поворачивая устройство. Я замечаю вращение в каждом из портретных контроллеров и программно выполняю переход, вот так (для газа). (Обратите внимание, что код еще не устойчив к правильной ориентации, пока я просто экспериментирую.)

- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)aToInterfaceOrientation duration:(NSTimeInterval)aDuration {

    [self performSegueWithIdentifier: @"SegueGasToLandscape" sender:self];
} 

Так, например, пользователь может дважды провести по экрану, чтобы просмотреть страницу портрета газа, а затем повернуть устройство, чтобы увидеть подробный график потребления газа.

Отсюда я хотел бы, чтобы пользователь мог провести пальцем вправо, чтобы увидеть подробный график электричества, а затем снова вправо к графику для обоих, но этого не произойдет, так как метод для этого состоит в том, чтобы раскрутить салфетку. этого не произошло. (И на самом деле контроллер ландшафтного представления электричества даже не создан в этот момент.)

Я думаю, что мне нужно не использовать раскручивающиеся переходы, а вместо этого использовать обычные переходы повсюду. Однако я хочу сделать это без создания новых экземпляров для существующих контроллеров (как это делают раскручивающиеся переходы), но при необходимости создать новый экземпляр (поскольку раскрутка переходов этого не делает).

Если это имеет значение, я буду рад написать код для iOS 6.1 и выше.

Кто-нибудь сделал это?


person Jane Sales    schedule 18.04.2013    source источник
comment
Посмотрите этот пост в блоге. В основном вам нужно проверить текущую ориентацию, чтобы решить, какой VC выбрать. vastdevblog.vast.com/blog /2012/02/12/   -  person Steve Moser    schedule 06.09.2013


Ответы (1)


Похоже, вы хотите использовать InstantiateViewControllerWithIdentifier: не забудьте установить идентификатор раскадровки принимающего контроллера представления.

if (!self.homeVC)
{
    self.homeVC = [self.storyboard instantiateViewControllerWithIdentifier:@"homeView"];
    [self presentViewController:self.homeVC animated:YES completion:nil];
}
person RickR    schedule 01.05.2013