「Refactor to Storyboard」로 일정한 플로우를 하나의 Storyboard로서 정리해 두면 편리
4363 단어 StoryboardiOSSwiftXCode7
이미 Storyboard 내에 있는 ViewController에서 Storyboard Reference를 만들 때의 흐름은,
1. 다른 스토리 보드로 나누고 싶은 ViewController를 선택 (복수 선택 가능)
2. Editor > Refactor to Storyboard... 선택
3. 대화 상자에 따라 스토리 보드 파일 만들기
입니다.
참고
Refactoring Storyboards
Storyboard Reference를 사용하여 Storyboard를 깨끗하게 만듭니다.
지금까지 엉망이었던 스토리 보드 파일
Storyboard Reference를 사용하면 Segue의 연결로 Storyboard끼리를 연계할 수 있게 되어, 간단하게 깨끗하게 유지할 수 있게 되었습니다.
Storyboard로 잘라내는 데 사용하는
Refactor to Storyboard...
스토리 보드 참조를 사용할 때 빌드 오류
편리하다고 생각해
Refactor to Storyboard...
로 Storyboard Reference를 만들고 있으면, 빌드 에러가 되는 일이 있었습니다.Storyboard Reference는 기본적으로
Deployment Target iOS 8.0
에서 사용할 수 있지만 iOS 9.0
이전 버전이라면 빌드 오류가 발생할 수 있습니다."Storyboard References cannot be the destinations of relationship segues prior to iOS 9.0"과 빌드 오류가 발생한 경우의 해결 방법
「relationship segue로 연결하는 곳에 Storyboard Reference를 지정하려면 iOS 9.0 이상이 아니면 안 된다」라고 하는 에러입니다만, 구체적으로는 TabBarController나 NavigationController로부터 직접 Storyboard Reference를 연결하면 일어납니다.
모처럼 다른 Storyboard로 나눈 흐름은 그대로 남겨두고 싶기 때문에 Storyboard Reference를 사용하지 않고 코드에서 Storyboard를 호출하도록 변경합니다.
TabBarController의 경우
스토리 보드에서 연결된 스토리 보드 참조를 제거하고 UITabBarController 만 만듭니다.
Refactor to Storyboard
로 만든 스토리 보드 파일 자체를 그대로 둡니다.코드는 UITabBarController를 상속하는 클래스를 만들고 UITabBarController의 viewControllers를 지정합니다.
class TabBarController: UITabBarController {
override func viewDidLoad() {
super.viewDidLoad()
let firstViewStoryboard = UIStoryboard(name: "FirstView", bundle: NSBundle.mainBundle())
let secondViewStoryboard = UIStoryboard(name: "SecondView", bundle: NSBundle.mainBundle())
let firstViewController = firstViewStoryboard.instantiateInitialViewController()
let secondViewController = secondViewStoryboard.instantiateInitialViewController()
self.viewControllers = [firstViewController!, secondViewController!]
// Do any additional setup after loading the view.
}
}
UITabBarController는 Storyboard Reference를 사용하지 않으므로 이전 빌드 오류는 제거되고
Refactor to Storyboard...
로 만든 Storyboard 파일은 그대로 사용할 수 있습니다.NavigationController의 경우
NavigationController에서도 마찬가지로 코드에서 UINavigationController의 viewControllers를 지정합니다.
class NavigationController: UINavigationController {
override func viewDidLoad() {
super.viewDidLoad()
let navigationStoryBoard = UIStoryboard(name: "Navigation", bundle: NSBundle.mainBundle())
let navigationViewController = navigationStoryBoard.instantiateInitialViewController()
self.viewControllers = [navigationViewController!]
}
}
사이고에게
「설정 화면의 Storyboard」나 「튜토리얼 화면의 Storyboard」와 같이, 일정한 플로우를 하나의 Storyboard로서 정리해 두면 플로우 자체를 그대로 다른 어플리에서도 재이용할 수 있으므로 편리합니다.
개인으로 만든 모두의 목록 라는 앱을 개발할 때는 메인 앱과는 별도로 튜토리얼만의 작은 프로젝트 파일을 만들어 어느 정도 할 수 있는 단계에서 Storyboard별 메인 앱으로 옮기기도 했습니다.
Reference
이 문제에 관하여(「Refactor to Storyboard」로 일정한 플로우를 하나의 Storyboard로서 정리해 두면 편리), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/kotala_b/items/6c7198b48b48addf91e6텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)