2014-02-17 6 views
1

저는이 답변을 온라인에서 검색해 왔으며, 모든 단일 게시물은 실제로 액션 코드를 작성하는 부분에서 건너 뜁니다. 나는 간단한 Interactive UIButton을 가지고있다. 그리고 만약 내가 "여기에 행동을위한 코드를 써라"라는 템플릿의 템플릿을 볼 수 있다면 그것은 도움이 될 것입니다 !!! 나는이 잠재적 인 행동을 설정하는 방법이라고 이해 생각하지만, 할 어디 실제 쓰기UIButton에 액션을 추가하는 방법

UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect]; 
[button addTarget:self 
    action:@selector(aMethod:)forControlEvents:UIControlEventTouchDown]; 
[button setTitle:@"Show View" forState:UIControlStateNormal]; 
button.frame = CGRectMake(80.0, 210.0, 160.0, 40.0); 
[view addSubview:button]; 

... 이것은 지금까지의 내가 얻을 수있다

(이 아이 패드 iOS7에 대한입니다) 액션 자체 코드?

답변

1

여기에 이미 답변 한 내용에 대해 자세히 설명하고 싶습니다. 두 응답은 모두 정확하지만 이유는 무엇이며 어떻게 작동하는지 설명하고 싶습니다.

[button addTarget:self 
    action:@selector(aMethod:)forControlEvents:UIControlEventTouchDown]; 

가장 먼저 살펴 봐야 할 사항은 다음과 같습니다. target.

대상은 클래스, 모든 클래스의 인스턴스입니다. 이 클래스의 유일한 요구 사항은 action을 구현해야한다는 것입니다.

action은 사용자가 단추를 누를 때 호출 할 메서드입니다.

@selector(aMethod:) 기본적으로 이것을 방법 서명으로 생각하십시오. Objective-c는 동적 언어이기 때문에 aMethod:은 존재하지 않아도되지만, 그렇지 않은 경우 프로그램이 중단됩니다. 시스템은 target 인스턴스의 action 메소드를 호출

:

그래서 우리는 내가이 버튼을 누릅니다 때마다, 모두 함께이를 넣어 경우.

및 방법 자체에 대한,이

- (void) aMethod:(id)sender { } 
+0

감사합니다! 그게 도움이, 방법으로 선언 방법을 추가 걸릴해야합니까? "undeclared indentifier 'aMethod'"오류가 발생합니다. " –

+0

아니요, 그렇지 않습니다. '@selector (aMethod :)'는 완전히 다른 메소드이고'@selector (aMethod)' 디버그 콘솔에서 실제로 복사하여 붙여 넣기하는 것이라면':(id) selector "를 호출합니다. –

+0

죄송합니다, 나는 뭔가를 놓치고 있습니다. 나는 ": (id) selector"를 가지고 있지 않습니다. 나는 "선언되지 않은 식별자"문제를 해결하는 방법을 놓쳤다. 미리 감사드립니다! 나는 이것에 처음이다 –

0

당신은 따른 방법으로 명명 된 클래스에서, 방법에 작업 관련 코드를 삽입합니다 :

- (void)aMethod:(id)sender { 
    // your code for the action goes here 
} 

당신은 아마 또한 제어 이벤트 UIControlEventTouchUpInside을 사용할 수 있습니다.

+0

감사처럼 보일 수 있습니다! Xcode가 인식 할 수있는 것이라고 생각한 온라인 포럼에서 "aMethod"를 빌 렸습니다. 이제는 사용자 생성이라는 것을 알고 UIbutton이 메서드를 호출하는 것을 이해합니다. 그것이 내게 정확히 무엇을 의미합니까? 전화하기 전에 다른 곳에서 방법을 만들어야합니까? 코드 한 페이지 내에서 모든 것을 유지할 수 있습니까? –

+0

UIButton의 대상을 self ("이 객체 인스턴스"를 의미)로 설정 했으므로 대답과 마찬가지로 동일한 .m 파일에 직접 aMethod 구현을 작성해야한다는 것을 의미합니다. – Aaron

0

대상을 자체로 설정 했으므로 aMethod : 메소드를 동일한 클래스에 추가해야합니다.

- (IBAction)aMethod:(id)sender 
{ 
    // do something here 
} 
관련 문제