2012-01-04 3 views
1

IBAction이있는 Button1이 있습니다. 또한 나는iPhone : IBAction vs 셀렉터

- (void)setTarget:(id)target action:(SEL)action { 
    [self.Button1 addTarget:target action:action 
     forControlEvents:UIControlEventTouchUpInside]; 
} 

그래서 내가 먼저 IBAction를 무엇 그가해야했던 버튼을 누르면, 행동보다는 내가 버튼으로 설정 내 버튼의 대상과 행동을 설정합니다. 그 명령은 언제나 그런 것입니까?

답변

3

nib 파일에서 컨트롤러를 보거나 보았을 때 패턴은 항상 IBAction이고 그 뒤에 단추에 추가 한 대상도 있습니다.

사실 Interface Builder에 IBAction을 추가하는 것은 실제로 IB에 ["UIControl" addTarget:"id" forControlEvents:"UIControlEvent"]을 호출하고 UIButton에 여러 대상을 추가 할 수 있습니다.

실제로 코드에 NIB 파일의 모든 내용이로드되므로 (initWithNib:named:을 사용하는 경우) 인터페이스 작성기에서 지정한 동작으로 버튼의 addTarget 함수를 먼저 호출 한 다음 나중에 위의 setTarget 함수가 호출되어 다른 대상 액션을 버튼에 추가합니다. UIControls 대상은 순서대로 액세스되는 배열에 저장되며 컨트롤 이벤트가 생성 된 순서대로 충족되면 트리거됩니다. UIControl (UIButton의 수퍼 클래스) 헤더 파일을 보면 NSMutableArray* _targetActions은 배열입니다. 그래서이 배열이 어떤 시점에서 생성 된 후에 순서를 바꾸지 않는 한 순서는 다음과 같이 시작됩니다.