2010-06-07 2 views
0

내 자신의 UIView 클래스를 만들어야하고 내가해야 할 일이 아닙니다. 클래스를 생성 한 다음 IB에서 작은 뷰를 배치했습니다 (나중에 데이터를 추가해야하는 레이블 일뿐입니다). 하지만 지금은 실제로 내 기본보기에 그것의 인스턴스를 넣어 방법에 붙어있다. 누군가 좋은 지침서의 방향으로 나를 가리킬 수 있습니까? 내가 한 일은 사용자 정의 tableViewCell을 만드는 것입니다.아이폰보기 컨트롤러 클래스 - 방법

DataTagViewController.m :

- (id)initWithNibNamed:(NSString *)DataTagViewController bundle:bundle { 
    if ((self = [super initWithNibName:DataTagViewController bundle: bundle])) { 
     // Custom initialization 
    } 
    return self; 
} 


MapView.m: 

    DataTagViewController *dataTag = [[DataTagViewController alloc] initWithNibNamed:@"DataTagViewController" bundle:nil]; 

    [theMap addSubView: dataTag.view]; <<< this line causes the crash (theMap is a UIView) 

지금 하위 뷰를 추가이 런타임 오류가 발생합니다 : - [UIView의 addSubView는 :] : 인식 할 수없는 선택기 예를 0x470f070 ' 2010-06-06 21시 22분로 전송 : 08.931

답변

1

UIViewController는 뷰가 아니지만 뷰를 제어합니다. 당신이 당신의 전망이 만든 DataTagViewController.xib 파일을해야합니까, 또한

[theMap addSubView:dataTag.view]; 

: 당신의 DataTagViewController 클래스의 UIViewController를 확장한다면, 당신은 클래스 자체보기 아니다 추가 할거야? 그렇지 않은 경우 UIViewControllerinitWithNibName:bundle 메소드를 사용해야합니다. 그렇지 않으면 코드 대신 직접 loadView 메소드를 구현해야합니다.

편집

귀하의 초기화 함수는 변수로 클래스의 이름을 사용하고 있습니다. 아마 작동하지 않을 것입니다.

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil 
{ 
    if (self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]) 
    { 
    } 
} 

init 함수 이외의 기능을 수행하지 않는 경우이 방법을 구현할 필요가 없습니다. alloc/init 문으로 충분합니다.

좋은 자습서를 얻으려면 문서의 View Controller Programming 가이드를 읽으십시오.

+0

도움을 주셔서 감사합니다 - 위의 내 편집을 참조하십시오. – Brodie

+0

- (id) initWithNibNamed : (NSString *) DataTagViewController 번들 : 번들 .... 변수 이름이 클래스 이름과 같지 않길 원합니다. – typeoneerror

+0

위대한 - 내가 만든 개체가있어 충돌이 없지만 데이터 태그가 여전히 볼 수 없습니다. – Brodie

0

DataTagViewController의 부모 클래스 란 무엇입니까? "내 자신의 UIView 클래스"를 만들어야하지만 실제로는 UIViewController 하위 클래스를 만들고 싶다고 제안합니다. initWithNibNamed : UIViewController 메서드입니다. 부모가 UIView이면 "인식 할 수없는 선택기"가 의미가 있습니다.

+0

아마도 내가 잘못하고있다. 정말로 내가 원하는 것은 데이터를 지속적으로 수정할 수 있어야하는 5 개의 uilabels가 포함 된 뷰 (데이터 태그)를 만들 수 있다는 것이다. 내가 만들었습니다. DataTagViewController라는 UIViewController 클래스는 DataTagViewController.xib를 디자인했습니다. – Brodie

관련 문제