한 스토리 보드에서 다른 스토리 보드로 뷰 컨트롤러 이동 또는 복사
UIViewControllers
하나의 스토리 보드에 여러 개가 있습니다. 이제 일부 UIViewControllers
를 다른 스토리 보드 로 옮기고 싶습니다 . 가능할까요?
예, 가능합니다.
- 복사 할 컨트롤러 선택
- Command+를 누릅니다.C
- 두 번째 스토리 보드 파일 열기
- Command+를 누릅니다.V
참고 : "IBOutlets는 복사 후에도 그대로 유지됩니다 (Xcode 6.3.2에서 확인 됨)."
복사는 가능하지만 한 프로젝트에서 한 번에 두 스토리 보드를 모두 연 다음 복사하여 붙여 넣어야합니다.
Xcode 8에서 특히 뷰 컨트롤러를 다른 스토리 보드로 이동하려면 Cmd로 이동하려는 뷰 컨트롤러를 선택하고 뷰 컨트롤러를 클릭하면됩니다. 선택한 상태로 유지하고 편집기 탭으로 이동하여 스토리 보드로 리팩터링을 선택합니다. 새 스토리 보드 파일의 이름을 묻고 Enter 키를 누릅니다.
선택한 뷰 컨트롤러가 포함 된 새 스토리 보드 파일이 생성됩니다. Main.storyboard에서 방금 만든 새 스토리 보드에 대한 참조 인 해당 뷰 컨트롤러 대신 Storyboard Reference 개체를 볼 수 있습니다.
복사-붙여 넣기 (Command + C, Command + V)는 잘 작동하지만 Xcode가 원래 연결을 유지하는 것처럼 보이기 때문에 콘센트 연결을 해결하는 것을 잊지 마십시오 : 프로젝트 닫기 / 다시 열기, 잘못된 항목 삭제 및 누락 된 연결 다시 설정.
복사 / 붙여 넣기가 가능하지만 Xcode의 Assistant Editor를 사용하여 두 스토리 보드가 나란히 열려있는 경우에만 작동합니다.
인터페이스 요소는 복사 / 붙여 넣기 를 통해 Xib와 스토리 보드 파일간에 이동할 수 있습니다 .
이것은 원래 나를 위해 작동하지 않았습니다. 전용 Xib에서 메인 스토리 보드로 UICollectionViewCell을 복사하려고했습니다. 셀은 스토리 보드로 복사되지 않습니다.
해결책은 스토리 보드에서 특정 상위 요소를 선택하는 것이 었습니다. UICollectionViewCell은 스토리 보드에서 UICollectionView의 자식으로 붙여 넣을 수 있지만 그렇지 않으면 붙여 넣을 수 없습니다.
특정 항목을 붙여 넣는 데 문제가있는 경우 붙여 넣기 전에 유효한 상위 요소 를 선택했는지 다시 확인하세요 .
Cut-n-Paste 사용이 실패하면 해결 방법이 있습니다. 붙여 넣는 파일에 ViewController가 있으면 붙여 넣기가 실패합니다. 따라서 붙여 넣을 스토리 보드를 선택할 수 없습니다. XCode는 붙여 넣기를 거부합니다. 따라서 먼저 빈 뷰 컨트롤러를 라이브러리에서 스토리 보드로 드래그해야합니다. 그런 다음 스토리 보드에서이 viewController를 선택하면 붙여 넣기가 작동합니다. 붙여 넣기가 끝나면 더미 viewController를 삭제할 수 있습니다. 다시는 필요하지 않습니다.
메인 스토리 보드에 너무 많은 장면이있어서 리팩토링해야하는 비슷한 상황이 발생했습니다. 내가 처음에 가지고 있던 생각은 여러 개를 표시하고 많은 사람들이 제안한대로 복사 붙여 넣기를하는 것이었다. 그러나 뷰 컨트롤러 코드에 대한 스토리 보드 연결의 해결에 대해 우려했습니다. 많은 검색 끝에 iOS 9부터 "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];
'programing tip' 카테고리의 다른 글
ActiveRecord : 대량 할당 할 수있는 모델의 모든 속성을 얻는 방법은 무엇입니까? (0) | 2020.10.31 |
---|---|
gem install json -v 1.7.3은 '빌드 도구를 포함하도록 PATH를 업데이트하십시오'를 제공합니다. (0) | 2020.10.31 |
Eclipse / Maven 오류 : "이 환경에는 컴파일러가 제공되지 않음" (0) | 2020.10.31 |
Eclipse가 시작되지 않고 로그 오류 메시지 : ObjectNotFoundException : 트리 요소 (0) | 2020.10.31 |
여러 값과 일치하는 if 문 (0) | 2020.10.31 |