Перемещение или копирование контроллера вида с одной раскадровки на другую
у меня есть несколько UIViewControllers
в одной раскадровке.
Теперь я хочу переместить некоторые UIViewControllers
в другой раскадровке. Возможно ли это?
9 ответов:
Да, это возможно.
- выберите контроллеры, которые вы хотите скопировать
- пресс команда + C
- откройте второй файл storyboard
- пресс команда + V
Примечание: "IBOutlets остается как есть после копирования (проверено на Xcode 6.3.2)."
можно скопировать, но вы должны открыть оба образа одновременно в одном проекте, а затем скопировать и вставить.
в Xcode 8, Если вы хотите переместить контроллеры вида на другую раскадровку, просто выберите контроллер(ы) вида, который вы хотите переместить с помощью Cmd + нажмите на контроллер вида. Сохраняя их выбранными, перейдите на вкладку редактор и выберите рефакторинг в раскадровку. Он спросит вас имя нового файла раскадровки и нажмите Enter.
новый файл раскадровки будет создан с выбранными контроллерами вида в нем. в основном.раскадровка, вы увидите ссылку раскадровки объект вместо этого контроллера вида, который является вашей ссылкой на новую раскадровку, которую вы только что сделали.
Copy-paste (Command+C, Command+V) работает нормально, но не забудьте Разрешить подключения к розетке, потому что Xcode, похоже, сохраняет исходные соединения: закрыть/снова открыть проект, удалить то, что не так, и восстановить отсутствующие соединения.
его можно скопировать / вставить, но это работает только если у вас есть обе раскадровки открыты бок о бок с помощью Xcodes Assistant Editor.
элементы интерфейса можно перемещать между файлами Xib и раскадровки через Копировать / Вставить.
Это изначально не работало для меня. Я пытался скопировать UICollectionViewCell из выделенного Xib в нашу основную раскадровку. Ячейка не будет копировать в раскадровку.
решение состояло в том, чтобы выбрать конкретный родительский элемент в раскадровке. UICollectionViewCell может быть вставлен в качестве дочернего элемента UICollectionView в раскадровке, но в противном случае не может быть вставлен.
Если у вас возникли проблемы с вставкой определенного элемента, не забудьте дважды проверить, что вы выбрали действующий родительский элемент перед попыткой вставить.
Если использование Cut-n-Paste не удается для вас, есть обходной путь. Вставить не удастся, если в вставляемом файле теперь есть ViewController. Это делает невозможным выбор раскадровки для вставки. В Xcode отказывается вставлять. Поэтому вам нужно сначала перетащить пустой контроллер вида в раскадровку из библиотеки. Затем выберите этот viewController в раскадровке, а затем вставить будет работать. После завершения вставки вы можете удалить фиктивный viewController. Вы не нужно еще раз.
Я пришел к аналогичной ситуации, когда в моей основной раскадровке у меня слишком много сцен и нужно рефакторинг. Идея, которую я имел в начале, состояла в том, чтобы отметить несколько и сделать copy paste, как предлагали многие. Тем не менее, я был обеспокоен любым разрешением соединений раскадровки с кодом контроллеров вида. После долгих поисков я обнаружил, что с iOS 9 появилась новая функция, доступная для "рефакторинга на Storuboard". Вы можете отметить несколько сцен в исходном раскадровке, и вы можете выберите в меню редактор этот параметр. Затем все выбранные сцены извлекаются из старой раскадровки, создается новая раскадровка, а также ссылка на нее в старой/главной раскадровке. Полезные totorials являются: https://code.tutsplus.com/tutorials/ios-9-staying-organized-with-storyboard-references--cms-24226 https://www.raywenderlich.com/115697/ios-9-storyboards-tutorial-whats-new-in-storyboards
надеюсь, что это новая официальная раскадровка функциональность рефакторинга может обеспечить лучшее решение такого рода проблем.
Я думаю, что это возможно....
UIStoryboard *secondStoryBoard = [UIStoryboard storyboardWithName:@"secondStoryBoard" bundle:nil]; UIViewController *theTabBar = [secondStoryBoard instantiateViewControllerWithIdentifier:@"myTabBar"]; [self.navigationController pushViewController:theTabBar animated:YES];