У мене кілька UIViewControllers
в одній Раскадровці. Тепер я хочу перенести деякі UIViewControllers
на іншу розкадрування. Це можливо?
У мене кілька UIViewControllers
в одній Раскадровці. Тепер я хочу перенести деякі UIViewControllers
на іншу розкадрування. Це можливо?
Відповіді:
Так, це можливо.
Примітка: "IBOutlets залишається незмінним після копіювання (перевірено на Xcode 6.3.2)."
Можна скопіювати, але ви повинні відкрити обидва розкадрування одночасно в одному проекті, а потім скопіювати та вставити.
У Xcode 8, якщо конкретно ви хочете перенести контролери перегляду на іншу розкадрування, просто виберіть контролери (-и) перегляду, які ви хочете перемістити за допомогою Cmd + клацніть контролер перегляду. Зберігаючи їх виділеними, перейдіть на вкладку Редактор та виберіть Рефактор для розкадрування. Він запитає вас у назві нового файлу розкадровки та натисне Enter.
Буде створено новий файл розкадровки з вибраними вами контролерами перегляду. На Main.storyboard ви побачите об'єкт "Довідковий матеріал" замість цього контролера перегляду, який є вашим посиланням на нову розкадрування, яку ви щойно зробили.
Копіювання-вставка (Command + C, Command + V) працює нормально, але пам’ятайте, що потрібно вирішувати підключення до розетки, оскільки Xcode, схоже, зберігає вихідні підключення: закрийте / повторно відкрийте проект, видаліть те, що неправильно, і відновіть відсутні зв’язки.
Можна скопіювати / вставити, але це працює, лише якщо ви обидві Раскадровки відкриті поруч, за допомогою редактора помічника Xcode.
Якщо використання Cut-n-Paste не вдається вам, є обхідне рішення. Вставити не вдасться, якщо тепер у файлі, що вставляється, є ViewController. Це унеможливлює вибір розкадрування для вставки. XCode відмовиться вставляти. Отже, вам потрібно спочатку перетягнути порожній контролер подання в розкадрування з бібліотеки. Потім виберіть цей viewController на розкадруванні, і тоді вставка працюватиме. Після закінчення вставки ви можете видалити фіктивний viewController. Вам це більше не знадобиться.
Елементи інтерфейсу можна переміщати між файлами Xib та Storyboard за допомогою функції Copy / Paste .
Спочатку це не працювало для мене. Я намагався скопіювати UICollectionViewCell із виділеного Xib на нашу головну сторінку розкадрувань. Клітина не копіюється в Раскадровку.
Рішенням було вибрати конкретний батьківський елемент у розкадруванні. UICollectionViewCell можна вставити як дочірній елемент UICollectionView в розкадрування, але в іншому випадку не можна вставити.
Якщо у вас виникають проблеми з вставкою певного елемента, переконайтеся, що перед перевіркою перевірте, чи вибрали ви дійсний батьківський елемент, перш ніж намагатись вставити.
Я зіткнувся з подібною ситуацією, коли в моїй Головній розкадровці у мене занадто багато сцен і мені потрібно зробити рефакторинг. Ідея, яка була у мене на початку, полягала в тому, щоб позначити кілька і зробити копіювальну вставку, як пропонували багато хто. Однак мене хвилювало будь-яке вирішення підключень сторибордів до коду контролерів перегляду. Після довгих пошуків я виявив, що з iOS 9 є нова функція, доступна для "Refactor to Storuboard". Ви можете позначити кілька сцен у своїй вихідній розкадровці, і ви можете вибрати цей параметр у меню Редактор. Потім усі вибрані сцени витягуються із вашої старої розкадровки, створюється нова розкадровка, а також посилання на неї в старій / основній розкадровці. Корисними загальними порадами є: 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];