2013-01-12 3 views
3

내 앱에는 두 가지 화면이 있습니다. 첫 번째는 사용자 프로필을, 두 번째는 프로필 정보를 편집하는 것입니다. 그들은 비슷하다. 나는 첫 번째 스크린을위한 xib 파일을 완성했다.UI 재사용 (xib 파일)

두 번째 화면에서 재사용하는 가장 좋은 방법은 무엇입니까?

답변

3

당신은 사용자 정의 뷰 클래스와 관련 요소를 캡슐화한다. xib 대신에 코드로 뷰를 생성함으로써이 문제를 해결할 수 있습니다.

그러나 xib를 사용하려는 경우 재사용 할 물건을 모델링 한 모델을 만들 수 있습니다. 그리고 다음 뷰 컨트롤러에서이 같은 일부 코드를 호출 : 당신이 당신의 XIB를 만들

UIView* aView = [UIView alloc] initWithFrame .....]; 
[[NSBundle mainBundle] loadNibNamed:@"MyReusableComponent" owner:aView options:nil]; 
UILabel* someLabel = aView.injectedLabel; //this is alive after loading the xib 
[self.view addSubView:aView]; 

, 주입되는 특성에 대한 세터에 대응하는 클래스에 파일 소유자를 설정하는 당신의 필요. (예 : 새로운 뷰 클래스). 이렇게하면 참조를 연결할 수 있습니다.

자세한 내용은 xib에서 테이블 셀을로드하는 애플의 사례를 참조하십시오. 이는 동일한 기술입니다. xib를로드하고 소유자를 지정하면 xib의 값을 소유자 (이 경우 사용자 정의보기)에 주입합니다.

enter image description here

+1

nibs가 아닌 코드의 경우 +1. 나는 펜촉이 장기간 또는 중기 적으로 해를 끼치는 것보다 훨씬 좋았던 경우를 결코 발견하지 못했습니다. – Simon

+3

nibs는 특히 장기적으로 매우 유용하지만 중단 할 위치와 그 사이에서 UI를 올바르게 나누는 방법을 알아야합니다. –

+0

@valentin - 당신 말이 맞아요, 이것이 확실히 당신의 취향이라면 제대로 할 수 있습니다. . –

0

모양이 변경된 UITextField 초 (논리적으로 쇼에 사용했을 수도있는 UILabel 대신)을 사용하고 enabled을 켜기/끄기로 전환 할 수 있습니다. 최소한의 예를 들어 :

표시 :

self.textField.borderStyle = UITextBorderStyleNone; 
self.textfield.enabled  = NO; 

편집 :

self.textField.borderStyle = UITextBorderStyleBezel; 
self.textfield.enabled  = YES; 

당신은 물론 단지이 기본보다 더 많은 모습에 할 수 있습니다.

-1

Xcode의 경우 파일> 복제본으로 이동하십시오. "editProfile"이것은 그 이러한 요소 당신을 당신은 당신이 뷰 컨트롤러의 편집 모드로 들어갑니다 것을 의미