[IPhone 08.30]02. 뷰 컨트롤러

2010. 8. 30. 15:55IPhone/Basic

델리게이션(Delegation)

@protocol FTPHostDelegate<NSObject>
-(void) percentDone
 : (NSString *)percent;
-(void) downloadDone: (id) sender;
-(void) uploadDone: (id)sender;
@

@interface MergedTableController:UIViewController<UITableViewDelegate,UITableViewDataSource>
{
      UIView                    *contentView;
      UITableView             *subView;
      UIButton                   *Button;
      id<FTPHostDelegate>*ftpHost;
      SEL                         finishedAction;
}
@end

  UIKit클래스가 사용자의 상호작용에 대한 응답 책임을 넘기기 위해 델리게이션을 사용한다.
객체의 델리게이트를 설정하면 어떤 상호작용 메시지든 다음으로 넘기게 되고 그 메시지에 대한 책임은 델리게이트로 위임되며 UITableView의 델리게이트 메소드인 tableView:didSelectRowAtIndexPath:가 일반적이다.

타켓-액션(Target-Action)

 컨트롤 *콘트롤명=[[콘트롤명 alloc]initWithTitle:@"Helvetica" style:UIBarButtonItemStyleBordered target:self action:@selector(메소드명:)] autorelease];

메소드 작성
-(void)메소드명:(id)sender{}

  Target-Action은 사용자의 상호작용 방향을 돌리는 가장 로우레벨의 방법이다. 타켓 액션을 사용하면 사용자가 버튼을 눌렀을때 어떤 객체가 처리할지 정할 수 있으며 특정 객체에게 컨트롤을 넘길 수 있다.

 Target-Action은 이전의 델리게이션과는 다르게 미리 정의된 메소드 명에 기반하지 않지만 델리게이션과 같은 방식으로 작동한다. 사용자가 앞에서 언급한 예의 버튼을 누르는 것과 같은 어떤 행위를 하면 타켓은 해당하는 액션을 구현하여 의미 있는 반응을 하게 된다.

 클래스에 Target-Action을 구현하기 위해서는 모든 객체 클래스를 지칭하는 id타입의 타켓변수와 메소드 선택자 selector인 SEL타입의 액션 변수를 추가하면 된다.