Перемещение или копирование контроллера просмотра из одной раскадровки в другую

У меня есть несколько UIViewControllers в одной раскадровке. Теперь я хочу переместить часть UIViewControllers в другую раскадровку. Возможно ли это?

Ответ 1

Да, это возможно.

  • Выберите контроллеры, которые вы хотите скопировать.
  • Нажмите Command + C
  • Откройте второй файл раскадровки
  • Нажмите Command + V

Примечание:. IBOutlets остается таким же, как после копирования (проверено на Xcode 6.3.2).

Ответ 2

Можно скопировать, но вам нужно одновременно открыть оба раскадровки в одном проекте, а затем скопировать и вставить.

Ответ 3

В Xcode 8, если вы специально хотите переместить контроллеры представлений в другую раскадровку, просто выберите контроллер просмотра, который вы хотите переместить с помощью Cmd + щелкнуть на контроллере представления. Сохраните их, перейдите на вкладку "Редактор" и выберите "Refactor to Storyboard". Он спросит вас имя нового файла раскадровки и нажмите "Enter".

Новый файл раскадровки будет создан с выбранными вами контроллерами представлений. В Main.storyboard вы увидите объект Reference Storyboard вместо этого контроллера представления, который является вашей ссылкой на новую раскадровку, которую вы только что создали.

Ответ 4

Скопировать-вставить (Command + C, Command + V) отлично работает, но не забудьте разрешить выходные соединения, потому что Xcode, похоже, поддерживает исходные соединения: закрыть/повторно открыть проект, удалить что-то неправильно и восстановить отсутствующие соединения.

Ответ 5

Можно копировать/вставлять, но он работает только в том случае, если у вас есть две раскадровки, открытые бок о бок с помощью редактора помощников Xcode.

Ответ 6

Элементы интерфейса можно перемещать между файлами Xib и Storyboard с помощью Копировать/Вставить.

Это изначально не работало для меня. Я пытался скопировать UICollectionViewCell из выделенного Xib на наш основной раскадровки. Ячейка не будет копироваться в Раскадровку.

Решением было выбрать определенный родительский элемент в раскадровке. UICollectionViewCell может быть вставлен в виде дочернего элемента UICollectionView в раскадровке, но в противном случае нельзя вставить его.

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

Ответ 7

Если вы используете Cut-n-Paste, вы можете обходным путем. Вставка не будет работать, если в файл, который вставлен, теперь есть ViewController. Это делает невозможным выбор раскадровки для вставки. XCode откажется вставить. Поэтому вам нужно сначала перетащить пустой контроллер представления в раскадровку из библиотеки. Затем выберите этот viewController в раскадровке, а затем паста будет работать. После того, как вы закончите вставку, вы можете удалить фиктивный viewController. Вам больше не понадобится.

Ответ 8

Я думаю, что это возможно....

UIStoryboard *secondStoryBoard = [UIStoryboard storyboardWithName:@"secondStoryBoard" bundle:nil];

UIViewController *theTabBar = [secondStoryBoard instantiateViewControllerWithIdentifier:@"myTabBar"];

[self.navigationController pushViewController:theTabBar animated:YES];