인터페이스 작성기를 통해 UIViewController에 연결된 UIView가 있습니다. 두 번 이상 사용할 수 있도록이보기를 복제, 복제 또는 복사 할 수 있습니까?중복, 복제 또는 복사 UIView
답변
확실히. 설명서에는 good example of how to achieve that; 그것은 UITableViewCell
을위한 것이지만 여기서도 잘 사용하는 방법입니다.
보기의 복잡도에 따라 사용자 정의보기 클래스로 만들고 하위 뷰가있는 모든 속성에 대해 IBOutlet
속성을 부여 할 수 있습니다. 이 경우 인터페이스 작성기에서 해당 클래스의보기에 대한 "클래스 ID"를 설정합니다. 그런 다음 위의 문서에서 제안한대로 예를 들어 [myLoadedView viewWithTag:3]
을 사용하지 않고보기 컨트롤러가 예를 들어 myLoadedView.someLabel
을 통해 주어진 XIB로로드 된보기의보기에 액세스 할 수 있습니다.
있는 UITableViewCell은로드입니다 여러 번, 결코 복제되지 않았습니다. – geon
차이점은 무엇입니까? –
제 생각에 @geon은 펜촉을 여러 번 열어서 새 개체를 만드는 동안 OP의 요구 사항을 해결하는 것처럼 보이지만 질문 제목에 암시 된대로 문제에 대한 일반적인 해결책으로 사용되지는 않습니다. 이것은 코드에서 생성 된 UIView의 일반적인 경우에는 작동하지 않습니다 (예 :'[UIView alloc] initWithFrame : aFrame];). 대답은 맞지만 질문 제목은 오해의 소지가 있습니다. – clozach
다음 카테고리는 특히 효율적일 수 있지만, 하나 개의 프로젝트에 나를 위해 일한되지 않을 수 있습니다
@implementation UIView (OPCloning)
- (id) clone {
NSData *archivedViewData = [NSKeyedArchiver archivedDataWithRootObject: self];
id clone = [NSKeyedUnarchiver unarchiveObjectWithData:archivedViewData];
return clone;
}
@end
내가 -copy 또는 -copyWithZone 구현하지 것 : 애플이 미래에 그렇게 할 수있다. 모든보기가 동일한 범위로 아카이브를 구현하는 것은 아닙니다. 복제 할 NSView 서브 클래스의 사용자 정의 속성에 대한 NSCoding 메소드를 구현해야합니다 (그렇지 않으면 복제 된 뷰에서는 nil이됩니다). 사용자 정의 복제 코드를 작성하는 것보다 쉽습니다.
다음은 사용할 수있는 새로운 방법 : 사용하여 UIView의 방법
- (UIView *)snapshotViewAfterScreenUpdates:(BOOL)afterUpdates
이보기를 그릴 수있는 가장 빠른 방법입니다. 아이폰 OS에서 사용 가능 7.
는참고 :이 방법은 매우 구체적인 사용 사례에 대한 좋은 해결책이지만 실제로이 방법은 원본과 동일한 유형의 새로운보기를 만들지 않습니다. 보기와 같이 보이는 순간 (예 :보기의 '스크린 샷 찍기')과 같이 보이는보기를 만듭니다.이보기는 대기 상태로 사용할 수 있습니다. 전환 효과 또는보기를 다시로드/다시 만들 때 – uliwitness
:
는extension UIView{
func copyView() -> AnyObject{
return NSKeyedUnarchiver.unarchiveObject(with: NSKeyedArchiver.archivedData(withRootObject: self))! as AnyObject
}
}
- 1. 증분 복제 중복 파일
- 2. mysql 복제 중복 항목
- 3. jquery 탭 복제/복사/미러링
- 4. mongoid/mongodb - 복제/복사 기록
- 5. dojo 데이터 저장소 복제/복사
- 6. 레일 클론 복제 또는 복제
- 7. 저장 프로 시저 복제 또는 복사 (SQL Server)
- 8. UIView 프레임 복사 및 새 뷰로 변환
- 9. 복제 또는 메시지 대기열?
- 10. 데이터베이스 복제 또는 미러링?
- 11. 파일 동기화 또는 복제
- 12. 기존 XML 복사, 요소 복제 및 수정
- 13. 는 C++ 링크리스트의 복사 및 복제 기능
- 14. http 트래픽을 중복 서버에 복제 할 수있는 방법이 있습니까?
- 15. UIView 또는 CALayer에 CAEAGLLayer 표시
- 16. UIWebView 또는 사용자 정의 UIView
- 17. QObject 복제
- 18. 로컬 서버에서 원격 서버로 로컬 복제 또는 서버에서 복제
- 19. MySQL Datefield : 복제 또는 계산 하시겠습니까?
- 20. UIView 컨텍스트의 비트 맵 내용을 다른 UIView의 내용으로 복사
- 21. 테이블 조인 또는 데이터 중복?
- 22. C# 속성 - 배열 또는 중복?
- 23. NERDTree를 사용하여 Vim에서 전체 폴더를 복사 (또는 복제)하는 방법은 무엇입니까?
- 24. Java Hashtable 복제
- 25. API 디자인 : 데이터 영역 개체를 사용하거나 복사/복제 하시겠습니까?
- 26. CakePHP : 트리 구조를 쉽게 복제/딥 복사 하시겠습니까?
- 27. SQLDeveloper에 Toad와 같은 사용자를 복사/복제 할 수있는 도구가 있습니까?
- 28. 'tmp 테이블에 복사 중'인 복제 MySQL 프로세스를 죽이는 것이 안전합니까?
- 29. 구성 요소를 무시하는 동안 구조를 딥 복사 (복제)하는 방법
- 30. 복사 값을 하나의 텍스트 상자에서 복제 값에 대한 질문을 참조
[스위프트 대답은] (http://stackoverflow.com/a/37050633/3681880는) – Suragch