2013-11-04 3 views
1

MainViewController라는 UIViewController가 있습니다. ViewMaker라는 또 다른 클래스가 있습니다. ViewMaker 클래스에는 다음과 같은 함수가 있습니다. 위의 함수에서 다른 뷰에서 현재 viewcontroller에 뷰 추가하기

-(UIView *)GetContentView 
{ 
UIView *return_view = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 500, 500)]; 

UIButton *done_button = [UIButton buttonWithType:UIButtonTypeRoundedRect]; 
done_button.frame = CGRectMake(300, 300, 100, 50); 
[done_button setTitle:@"Done" forState:UIControlStateNormal]; 
[return_view addSubview:done_button]; 
return return_view; 
} 

실제로 내가 textviews처럼 더보기를 추가합니다 다음과 같이 내가 위의 메소드를 호출하고있는 MainViewController 클래스 등

라벨.

-(void)CreateViews 
{ 
UIView *content_view = [[[ViewMaker alloc] init] GetContentView]; 
[self.view addSubview:content_view]; 
} 

이제 MainViewController 클래스의 완료 버튼 (textviews, 라벨 등의 다른 구성 요소)이있는보기가 추가되었습니다. 내 문제는 완료 버튼에 대상 기능을 추가하는 것입니다. 완료 버튼을 클릭하면 ViewMaker 클래스에서 반환 된 뷰의 데이터에 따라 MainViewController에서 일부 동작 (예 : 일부 뷰 추가)을 수행하려고합니다. 어떻게해야합니까? 미리 감사드립니다.

답변

1

나는

이 완료 버튼이 추가, 당신의 ViewMaker 클래스는 PopupContentMaker과 동일 가정 PopupContenMaker에서

[done_button addTarget:self action:@selector(doSomething) forControlEvents:UIControlEventTouchUpInside]; 

:

- (void)doSomething{ 
if ([self.delegate respondsToSelector:@selector(handleDoneButtonTap)]) { 
    [self.delegate performSelector:@selector(handleDoneButtonTap) withObject:self]; 
} 

} 

이 PopupContentMaker에 위임 속성을 선언, MainViewController를 델리게이트로 만들려면

-(void)GetContentView 
{ 
PopContentMaker *pcm = [[PopupContentMaker alloc] init]; 

pcm.delegate = self; 

[self.view addSubview:[pcm GetContentView]]; 

} 

-(void)handleDoneButtonTap{ 
//Do action after done button 
} 
0

당신이 시도 할 수 : 버튼을 누를 때 사용자 정의 메소드를 호출 할 수 있습니다 이러한 방법으로

[done_button addTarget: self 
     action: @selector(buttonClickedMethod) 
forControlEvents: UIControlEventTouchUpInside]; 

합니다.

0

매개 변수로 target 및 action을 getContentView 메소드에 전달하거나 위임 패턴을 사용할 수 있습니다.

관련 문제