2012-01-31 3 views
0

UIVeiw 클래스와 .xib를 만들었습니다. 이 .xib보기 내에서 I는 400x200까지 확장의 크기와 자유형 그것의 설정을하고 난 같은 이름을 가진 내 사용자 정의 클래스에 할당 :iOS5 UIView 클래스 추가 및 조작

스토리 보드 : blogView 클래스 파일 : blogView.h & blogView.m

.xib 안에 레이블과 텍스트 필드를 추가하고 .h 파일 등의 변수에 링크했습니다 (아래 코드 참조).

blogCont.h

#import <UIKit/UIKit.h> 

    @interface blogCont : UIView 
    @property (strong, nonatomic) IBOutlet UILabel *lbBlogDate; 
    @property (strong, nonatomic) IBOutlet UITextView *txtBlogTitle; 

    @end 

blogCont.m

내 주요 viewController.m 파일에 내가이보기 클래스를 초기화하기 위해서 다음 코드를 추가로 이제
#import "newsStoryView.h" 

    @implementation blogCont 
    @synthesize lbBlogDate; 
    @synthesize txtBlogTitle; 

    - (id)initWithFrame:(CGRect)frame 
    { 
     self = [super initWithFrame:frame]; 
     if (self) { 
      // Initialization code place a log to see if it loads 
      NSLog(@"View Loaded"); 


     } 
     return self; 
    } 
    @end 

, 내가 추가 한 배경색이로드되는지 확인하십시오.

viewController.m

UIView *blogCont = [[blogView alloc] init]; 
blogCont.backgroundColor = [UIColor purpleColor]; 
[subview addSubview:blogCont]; 

지금 내가 이걸 실행할 때 모두 잘 작동하지만 보라색 배경이 보이지 않는 것처럼 보입니다.보기가로드되지 않는 것처럼 보이지만 로그 내에서이보기 내에있는 NSLog 메시지를 볼 수 있습니다. NSLog (@ " 보기로드 됨 "); 그래서이 일을 시작한 것 같아요. 그러나 저의 삶은 이것을 보여줄 수 없습니까?

지금은 내 주요보기 Controller.m 한 느낌에 약간의 코드를 변경하는 경우 :

CGRect blogFrame; 
blogFrame.origin.x = 20; 
blogFrame.origin.y = 20; 
blogFrame.size = CGRectMake(400,200);; 


newsStoryView *blogCont = [[blogView alloc] blogFrame]; 
blogCont.backgroundColor = [UIColor purpleColor]; 
[subview addSubview:blogCont]; 

그럼 내가보기에 좋은 보라색 상자를 표시 얻을, 그래서 프레임 크기를 설정할 때이 나타나 init 'view'blogFrame ', bu tI .xib 설정 내에서이 모든 것이 설정 될 것이라고 생각 했으므로이 작업을 수행 할 필요가 없습니다.

그래서 어떻게 외부보기 클래스를 생성하고 다른보기에 할당 한 다음 데이터를 조작 할 수 있습니까? blogCont.lbBlogDate.text를 사용하여 .xib의 레이블에 액세스하는 것이 가능하지는 않지만 나는 그것을 볼 수 없기 때문에 나는 그것을 확인할 수 없다.

내가 뭘 잘못하고 있니?

감사

답변

0

내가 거의 다음 내 자신의 질문에 대답 한 것 같다 :

내가 크기를 요구 한 내 별도의 클래스 뷰에서 크기를 설정하지 않은 경우 초기화 그것 :

- (id)initWithFrame:(CGRect)frame 

이것은 크기를 묻습니다

위의 내용을 수행 할 수 있도록 다음을 수행 할 수 있습니다.

- (id)init 
{ 
    self = [super initWithFrame:CGRectMake(0, 0, 478, 220)]; 
    .... rest of code 

보기로드 내에서 크기 설정.

하지만 아래로 내 기본보기 컨트롤러에 init을 때 나는 또한 그것을 설정할 수 있습니다 :

newsStoryView *blogCont = [[blogView alloc] initWithFrame:CGRectMake(0, 0, 400, 200)]; 

이 내가 각각의 위치를 ​​제어 할 수있는 것이 좋습니다.희망이 누구든지 도움이