9

가능한 한 짧게 만들려고합니다.중첩 사용자 지정 클래스/인터페이스 작성기를 사용하는 XIB

두 IBOutlet 속성을 사용하여 UIView를 확장하는 사용자 지정 클래스를 작성했으며 해당 IBOutlet이 연결된 XIB와 연결된 XIB가 있습니다.

그런 다음 클래스를 가져 와서 다른 XIB (예 : 테이블 셀)에 포함시키고 싶습니다.

새 XIB에 해당 사용자 지정 클래스를 포함 할 때 해당 UI와 관련된 원래 XIB를 인식하지 못하기 때문에 IBOutlet을 새 XIB의 인터페이스 요소로 다시 설정해야합니다. 이것은 절름발이입니다.

누구나 내가 뭘 하려는지 잘 알고 있습니까?

답변

8

내가이 일을하는 관리 방법은 당신이 원하는 공간을 정의하는 UIView의 추가

  • 당신의 표시 할 내부 펜촉.
  • 라이브러리에서 UIViewController 개체를 추가하고 Nib Name 속성을 내부 nib 파일의 이름 (확장명 없음)으로 설정합니다.
  • 외부보기 컨트롤러에서이 두 항목에 대한 IBOutlet을 만들고 연결하십시오. (나는 innerViewinnerViewController로 참조합니다.)
  • 이 외부 nib 파일에 아무것도 당신의 내면의 뷰 컨트롤러에 정의 된 IBOutlets 중 하나를 연결하지 마십시오, 단지 연결되지 않은 그들을 둡니다. 당신의 외부 펜촉 사용자 정의있는 UITableViewCell 경우,

    [self.innerView addSubview:self.innerViewController.view]; 
    self.innerViewController.view.frame = CGRectMake(0, 0, self.innerView.frame.size.width, self.innerView.frame.size.height); 
    

    당신의 로 awakeFromNib에서 그 라인을 넣어 : 엑스 코드에서

당신의 외부 뷰 컨트롤러의 의 viewDidLoad 방법에서
,이 두 줄을 추가 대신
메소드를 사용하십시오.

빌드 & 실행!

+0

그것은 OS X에서 똑같은 방식으로 작동합니다. 단지 NS 클래스로 UI 클래스를 대체하십시오. – Mark

1

전적으로 코드의 UIViewController에서 사용하기 위해 펜촉에 UIViews를 넣는 것으로 가정합니다. Apple은 이것을 detached nib file이라고합니다.

세부 정보 및이 기능을 작동시키는 방법에 대한 예는 제가 링크 된 안내를 따르십시오.

인터페이스 빌더에 다른보기를 포함 시키려면 부모보기에 add a UIView element from the Library, set its class in the Inspector이 필요합니다. 삽입 된 뷰의 클래스가 설정되면 IBOutlet이 표시되어야합니다.
이 외부 펜촉을 열고이 할 인터페이스 빌더에서

: 여기

+1

첫 번째 문장은 내가하는 일이 아닙니다. 클래스 자체는 UIView이며 UIImageView와 UIActivityIndicator를 포함합니다. 그 마지막 문장은 맞지만 불행히도 올바르게 행동하지는 않습니다. IBOutlets를 연결합니다. –

관련 문제