2010-08-23 5 views
0

내 viewbased 응용 프로그램에서 나는 mainview로 oneview 및 mainview의 subview로 다른보기를로드했습니다. 그 작품은 물론 코드는 mainviewcontroller에서단일 UIViewController에서 여러 UIView 클래스를 구현하는 방법

,

IBOutlet UIView *subView; 
@property(nonatomic,retain) UIView *subView; 
@synthesize subView; 
[subView release]; 

//add subview 
[self.view addSubview:subView]; 

//removefromsubview 
[subView removeFromSuperview]; 

이 코드는 잘 작동 ..... 내가 mainviewcontroller의 서브 뷰를 만들 해달라고

이다, 그래서 새로운 UIView의 생성 클래스 및 그것의 이름이 subView, 이제 mainviewcontroller에서 subView의 모든 선언을 삭제하고 mainviewcontroller에서 subView 클래스를 가져옵니다. 그리고 이것을 사용하여 [self.view addSubview:subView];

이 것들이 잘 작동하지 않습니다. 누구든지 나를 도울 수 ... UIViewcontroller.One 별도의 UIView 클래스를 상호 작용할 수 있습니다. 한 가지 더 UIView 레이블 및 텍스트 상자에 UIViewController UIView 레이블 및 텍스트 상자에 값을 설정할 수있는 UIView 클래스가 있습니다 ......

가능한가? 사전에

감사합니다 ....... 죄송합니다 나의 나쁜 영어

+0

질문에 코드를 넣을 수 있습니까 ... 작동하지 않는 코드 –

+0

예, viewDidLoad 메서드에서이 코드를 추가했습니다. [자기.보기 addSubview : subView]; – dragon

답변

1

당신은 지금 즉,있는 UIView로 선언 서브 뷰라는 하위 클래스,

@interface Subview : UIView { 
    UILabel *foo; 
} 

@property (nonatomic, retain) UILabel *foo; 

@end 

이 당신이 원하는 기본 UIView 내부에서이 서브 클래스를 사용하십시오. 당신이해야 할 일이 몇 가지 있습니다.

  1. #import 헤더 파일에 Subview를 추가하고 클래스에 인스턴스를 추가하십시오.
#import "Subview.h"

내부 사용자의 @interface 년대 {}의의

, 당신의 주요 뷰 컨트롤러에 대한 viewDidLoad 클래스에서

Subview *mySubview; 

, 바닥의 주위에, 같은 것을 추가 :

mySubview = [[Subview alloc] init]; 

[self.view addSubview:mySubview]; 

[mySubview release]; 

첫 번째 줄 당신을 위해 새로운 "Subview"를 할당 할 것이고, 두 번째 줄은 당신의보기에 이것을 추가 할 것입니다. 그래서 당신은 가지고있는 것을 얻고, 세 번째 줄은 그것을 풀 것입니다. "self.view"가 이제 책임 져서 사라지 지 않기 때문에 여기에서 해제 할 수 있습니다.

마지막으로 Subview의 init 메소드에서보기를 설정해야합니다. Subview.m에서 다음과 같이하십시오 :

- (id)init 
{ 
    if (self = [super init]) { 
     foo = [[UILabel alloc] init]; 
     foo.text = @"Hello!"; 
     [self addSubview:foo]; 
    } 
    return self; 
} 

그리고 나는 그것을 처리해야한다고 생각합니다. Subview를 위해 foo를 -dealloc에 릴리스하고 싶지만 이미 그 방법을 알고있을 것입니다.

+0

IBOutlet UIView * subView; @property (비 원자력, 보유) UIView * subView; @synthesize subView; [subView release]; mainviewcontroller에서 xib 파일로 서브 뷰를 생성 중입니다. 할당 및 할당 취소 코드가 필요하지 않습니다. uiview.Its가 잘 작동하므로 하위 뷰를 끌어 놓습니다. 주로 내가 separte uiview 하위 클래스를 원하는 이유는 mainviewcontroller에서 사용되는 레이블 및 텍스트 상자의 수가 더 많음을 의미하므로 MainviewController에서 해당 변수를 separp하고 싶습니다. 그래서 분리 된 UIView 하위 클래스로 추가하려고합니다. – dragon

+0

하위 클래스를 만든 다음 서브 클래스가 아닌 subView에 대해 이야기하고 싶을 때 혼란 스러울 것입니다. 직접 볼 수 있는지 보도록하겠습니다. 별도의 UIView 하위 클래스로 추가하여 뷰 컨트롤러와 분리하려는 라벨 및 텍스트 상자가 여러 개 있습니다 ...? 그건 말이되지 않습니다. 처음 서브 클래 싱을 실시하는 이유는 무엇입니까? – Kalle

+0

죄송합니다. 정확히 내가 원하는 것을 설명 할 수 없습니다. 재생 해 주셔서 감사합니다. – dragon

관련 문제