각각의 컨트롤러에 XIB를 만들지 않고 한 곳에(보통 AppDelegate가 되겠음..) 공통으로 만든 후
여러 페이지에서 쓸 수 있다.
네비게이션 바 처럼 여러 컨트롤러에 공통으로 쓰이는 컴포넌트는 이 메서드를 이용해
공통 UI 에 액션을 적용 시킬 수 있다.
Ex) 
AppDelegate에 다음과 같이 선언..  
UIButton * NaviButton[3];
UIView * m_view;
UITextField *tf;
[NaviButton[0] addTarget:self action:@selector(eventHome) forControlEvents:UIControlEventTouchUpInside];
[NAviButton[1] addTarget:self action:@selector(eventMenu) forControlEvents:UIControlEventTouchUpInside];
[m_view addTarget:tf action:@selector(eventNaviOk) forControlEvents:UIControlEventTouchUpInside];
실제 각 컨트롤러에서 @selector로 보낸 메서드(메세지) 들을 재정의 해주면 된다.
- (void) eventHome
{
    // 재정의
}
- (void) eventMenu
{
    // 재정의
}
- (void)eventNaviOk
{
   // 재정의
    ESignItemDetailCont
roller *hESignItemDetailController = [[ESignItemDetailController alloc]initWithNibName:@"ESignItemDetailController" bundle:nil];
    [self.navigationController pushViewController:hESignItemDetailController animated:YES];
    [hESignItemDetailController release]; 
}
Ex)
statePicker1 = [[CustomArrayPickerView alloc] init]; // 피커를 만듦
//valueStateChange1 메서드
- (void)valueStateChange1:(CustomArrayPickerView*)arrayPicker   
{
    if([self.appDelegate.calledFromWhere isEqualToString:@"1"]){
        searchLbl.text = [arrStateData1 objectAtIndex:arrayPicker.selectedRow];
    }else{
        searchLbl.text = [arrStateData2 objectAtIndex:arrayPicker.selectedRow];
    }
}
[statePicker1 addTarget:self action:@selector(valueStateChange1:) 
forControlEvents:UIControlEventValueChanged];
댓글 없음:
댓글 쓰기