iOS: как переключаться между альбомным и портретным режимами в раскадровке?
В моем универсальном приложении у меня есть основная деталь в начале. На iPad это просто отображается как разделенный вид, и когда я меняю ориентацию интерфейса, авторазмер работает нормально. Но на iPhone это не работает достаточно хорошо в моем детальном представлении. Поэтому я хочу иметь два разных представления для моего DetailViewController, которые должны иметь одинаковую функциональность, но я не могу заставить его работать должным образом. Я пытался использовать два контроллера представления, но это не помогло. Кстати, я использую раскадровку.
Я думал, что нашел решение, добавив два представления в мой DetailViewController. Затем я просто проверяю текущую ориентацию и устанавливаю недавний вид так:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
Video *currentVideo = [[self.xmlParser videos] objectAtIndex:indexPath.row];
if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad)
[self.detailViewController setDetailItem:currentVideo];
else {
if (!self.detailViewController) {
DetailViewController *nextController = [self.storyboard instantiateViewControllerWithIdentifier:@"Detail"];
if ([UIDevice currentDevice].orientation == UIDeviceOrientationPortrait)
[nextController setView:nextController.portraitView];
else
[nextController setView:nextController.landscapeView];
[nextController setDetailItem:currentVideo];
[self.navigationController pushViewController:nextController animated:YES];
}
}
}
Это работает так, как должно, но теперь я столкнулся с другой проблемой. Два представления содержат абсолютно одинаковые выходы, но я могу подключить только выходы одного из них к моему классу DetailViewController. Таким образом, в одной из ориентаций я не могу просматривать свое содержимое должным образом, или мне приходится дважды все кодировать, что именно то, чего я хочу избежать.
У вас есть идеи, как я могу справиться с этой проблемой?
заранее спасибо
1 ответ
Вы можете попробовать добавить два представления в представлении контейнера к контроллеру представления в раскадровке. Размер одного должен быть портретным, другой - пейзажным. Добавьте все необходимые элементы управления для просмотра. Когда ориентация изменится - скрой одну и покажи другую.