2014-04-16 1 views
0

를 슈퍼 클래스 loadNibNamed, 그래서 나는 그 수행 할 수IOS 내가에서는 CustomClass = "BaseClass로"(내가 엑스 코드 편집기에이를 구성)와 view.xib 파일을 가지고

BaseClass *mBassClass= [[[NSBundle mainBundle] loadNibNamed:@"view" owner:self options:nil] objectAtIndex:0]; 

을하지만 난 방법을 알고 싶어요 나는 그것을 할 수있다 :

나는 BaseClass로부터 자식 클래스를 얻었을 것이다. 같은 펜촉 파일을 가지고 예를 들어 ChildClass에는 BaseClass로에서 확장하고, 내가 어떤 아이의 특정 기능을 가진 클래스 그러나이 모든 뷰에있어 BaseClass로 갖고 싶어 뾰족하지만 그래서 ChildClass에

ChildClass *aChild = [[[NSBundle mainBundle] loadNibNamed:@"view" owner:self options:nil] objectAtIndex:0]; 

ChildClass2 *anotherView = [[[NSBundle mainBundle] loadNibNamed:@"view" owner:self options:nil] objectAtIndex:0]; 

와보기를로드 나는 다음과 같은 견해를 개발하고 있어요 내 경우

:

(1) 펜촉 파일, 그것은 핵심 플롯 그래프

을 포함 제어 및 UIView의 일부있는 UIButton을 가지고있다

(2) GraphView라고하는 BaseClass는 nib 파일과 일치하며 uibuttons와 작동합니다.

(3) 일부 하위 클래스는 각기 다른 그래프/그림을 UIView에 칠하지만 uibutton 컨트롤의 기능을 상속합니다.

의견이 있으십니까? 감사합니다

+0

당신이 앱/뷰를 사용하여 달성하고자하는 것에 대해 묻는 질문을 재 작성하고 추상 클래스 및 뷰에 대해 묻지 말고 (현재 묻는 것을 이해하지 못하기 때문에) – Wain

+0

완료, 미안하다. 영어. – jlmg5564

+1

해결책은 다음과 같을 수 있습니다. 논리를보기와 분리하십시오. 그래서, 내가 BaseClass를 가지고 있고 내부에서 Control 클래스를 선언하고,이 컨트롤 클래스는 그래프/플롯을 페인트하고, 그래프/플롯의 각 유형에 대한 서브 클래스와 함께이 Contro 클래스를 인스턴스화합니다. – jlmg5564

답변

1

그래프의 컨테이너로 XIB를 만듭니다. 여기에는 모든 일반적인보기 및 기능이 포함되지만 그래프 관련 내용은 포함되지 않습니다.

이제 NIB를로드하면 BaseClass 인스턴스가 생성됩니다. 실제로 BaseClass을 가져야합니다. NIB에서 보관 취소 된 클래스는 변경할 수 없습니다.

그래프보기는 BaseClass의 서브 클래스가 아니어야합니다. 현재 상황에 적합한 그래프 뷰 클래스를 인스턴스화하고 BaseClass (컨테이너) 인스턴스가 소유 한 컨테이너 뷰의 하위 뷰로 추가해야합니다.

그래프보기에서 공통 버튼 상태를 변경해야하는 경우 서브보기로 추가 할 때 그래프보기에 BaseClass 인스턴스에 대한 참조를 제공해야합니다.

+0

당신의 답변에 대해 감사 Wain Logged – jlmg5564