Я переношу старое приложение из .xib-s в .storyboard-s. Эти .xibs имеют много соединений IBOutlet, и очень много времени для копирования & вставьте представление и заново создайте их. Мне было интересно, есть ли способ сделать это без проблем. Кто-нибудь знает решение этой проблемы?Копирование с .xib на .storyboard и сохранение соединений IBOutlet
ответ
Да, есть способ.
Убедитесь, что сценарий контроллера сценарной сцены имеет правильный набор классов для контроллера вида.
Щелкните правой кнопкой мыши на файле xib и выберите Open As -> Source Code.
Найти парную метку
<subviews> ... </subviews>
и скопировать раздел.Откройте раскадровку таким же образом (Open As -> Исходный код) и найдите соответствующий контроллер представления в xml (помечен комментарием xml, например
<!--MyViewController>
), и скопируйте и вставьте в него объекты subviews xml из xib, внутри контроллеров вида<view> ... </view>
теги. Например<viewController id="vXZ-lx-hvc" customClass="TwoViewController" sceneMemberID="viewController"> <layoutGuides> <viewControllerLayoutGuide type="top" id="jyV-Pf-zRb"/> <viewControllerLayoutGuide type="bottom" id="2fi-mo-0CV"/> </layoutGuides> <view key="view" contentMode="scaleToFill" id="kh9-bI-dsS"> <rect key="frame" x="0.0" y="0.0" width="320" height="568"/> <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/> <subviews> <button opaque="NO" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="fLe-1C-hTu"> <rect key="frame" x="116" y="244" width="46" height="30"/> <state key="normal" title="Button"> <color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/> </state> </button> </subviews> <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/> </view> </viewController>
Повторите описанные выше шаги с
<connections> ... </connections>
скопировать по всем IBOutlets. Обратите внимание, что соединения идут под<view> .. </view>
тегов, но внутри<viewController> ... </viewController>
<viewController id="vXZ-lx-hvc" customClass="TwoViewController" sceneMemberID="viewController"> <layoutGuides> <viewControllerLayoutGuide type="top" id="jyV-Pf-zRb"/> <viewControllerLayoutGuide type="bottom" id="2fi-mo-0CV"/> </layoutGuides> <view key="view" contentMode="scaleToFill" id="kh9-bI-dsS"> <rect key="frame" x="0.0" y="0.0" width="320" height="568"/> <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/> <subviews> <button opaque="NO" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="fLe-1C-hTu"> <rect key="frame" x="116" y="244" width="46" height="30"/> <state key="normal" title="Button"> <color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/> </state> <connections> <action selector="samButtonTap:" destination="vXZ-lx-hvc" eventType="touchUpInside" id="1sQ-0S-S8z"/> </connections> </button> </subviews> <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/> </view> <connections> <outlet property="samButton" destination="fLe-1C-hTu" id="8GK-Nn-Loy"/> </connections> </viewController>
Вы заметите от второго фрагмента, что IBActions представлены с точки зрения, где, как представлены IBOutlets вместе после того, как подвиды имеют были объявлены.
Возможно, вам понадобится сделать больше, в зависимости от того, насколько сложным является xib-файл. Если вы решите воссоздать некоторые компоненты xib, а не скопировать их по идентификаторам, это изменится, поэтому имейте это в виду. Не забудьте удалить файл xib из проекта, как только вы закончите.
Я думал об этом, но надеялся, что есть другой способ. Теперь, кто хочет написать приложение, которое делает это автоматически :) –
- 1. Xcode Storyboard и xib-соединение
- 2. HeaderView и FooterView, Xib, StoryBoard
- 3. XIB to Storyboard
- 4. Storyboard vs XIB
- 5. Convert Storyboard to XIB
- 6. Копирование содержимого (включая ограничения) элемента Storyboard в файл xib
- 7. UITableViewCell в xib как IBOutlet?
- 8. Быстрая ошибка IBOutlet с xib-файлом
- 9. Вернитесь с Xib на другой ViewController в StoryBoard
- 10. Добавить UIView в Storyboard без файла XIB
- 11. Использование Storyboard VS .xib (XCode 5)
- 12. cellForRowAtIndexPath: для механизма StoryBoard и XIB Behavior и Cell caching?
- 13. Могу ли я позвонить .storyboard, например .xib?
- 14. UICollectionView, UICollectionCell и IBOutlet
- 15. Сохранение и восстановление соединений с XIFF
- 16. Почему я должен подключить IBOutlet дважды в пользовательском NIB/XIB?
- 17. Невозможно связать IBOutlet с XIB-файлом XCode 6
- 18. Резюме всех соединений IBOutlet, IBAction в проекте?
- 19. Swift - пользовательский вид с XIb файлом, IBOutlet равен нулем
- 20. Проблемы с раскадровки на XIB?
- 21. копирование папок и сохранение разрешений
- 22. Копирование файлов и сохранение дубликатов
- 23. iPhone IOS5 Storyboard, как загрузить UIViewController с пользовательским .xib-файлом?
- 24. Storyboard Monotouch с контроллерами вида без использования xib
- 25. Проблема с подключением IBOutlet
- 26. Разработка приложения с использованием Storyboard или xib-файла
- 27. FBLoginView не отображается на StoryBoard
- 28. Защита мобильных соединений - Сохранение секретов и ключей
- 29. Крушение IBOutlet
- 30. Можно ли связать файл xib для просмотра контроллера через IBOutlet?
Я думаю, что Xcode делает это автоматически, как только вы измените класс ViewController на ваш фактический класс контроллера. Вы ничего не можете с этим поделать, если xcode не делает это автоматически. – iphonic