기본적으로보기에 여러 개의 단추가 있어야합니다. 나는 그들에게 모두 한 가지 기능을 부탁하여 '국가'를 추적 할 수 있기를 바랍니다.여러 UIButtons 함수
기능을 호출하는 버튼을 어떻게 알 수 있습니까? 어쨌든 발신자의 텍스트를 가져올 수 있습니까?
기본적으로보기에 여러 개의 단추가 있어야합니다. 나는 그들에게 모두 한 가지 기능을 부탁하여 '국가'를 추적 할 수 있기를 바랍니다.여러 UIButtons 함수
기능을 호출하는 버튼을 어떻게 알 수 있습니까? 어쨌든 발신자의 텍스트를 가져올 수 있습니까?
, 다음 서명 중 하나를 가질 수 있습니다 ("Target-Action in UIKit"참조)
- (void)action
- (void)action:(id)sender
- (void)action:(id)sender forEvent:(UIEvent *)event
보낸 사람을 수락하는 메서드 서명을 사용하면 해당 작업을 트리거 한 개체에 액세스 할 수 있습니다. 그런 다음 제목과 태그를 포함하여 호출 객체의 속성에 액세스 할 수 있습니다. 보낸 사람과 이미 가지고있는 포인터를 비교하여이 특정 이벤트의 보낸 사람을 결정할 수 있습니다.
if (sender == self.nextPageButton)
은 이해하기 쉽고 if (sender.tag == 4)
또는 if ([((UIButton *)sender).currentTitle isEqualToString:@"foo"])
보다 깨지기 쉽기 때문에 포인터 비교를 선호합니다. IB의 태그를 보면 코드가 의미하는 바, 중요하거나 중요하지 않은 내용을 알 수 없습니다. UI를 업데이트하거나 앱을 현지화 할 때 제목이 변경되며 변경 사항은 코드를 변경하지 않아도됩니다.
버튼의 tag
속성을 설정하십시오.
인터페이스 작성기에서이를 수행 할 수 있습니다 (필드를 살펴보십시오). 코드에서 다음
:
if (sender.tag == 0) {
} else if (sender.tag == 1)
등 IBAction를 방법을 포함하여 아이폰 OS 동작 방법에
아. 좋은 친구. 감사! – Critter
태그를 명시 적으로 설정할 필요가 없습니다. 당신은
@property (nonatomic , retain) IBOutlet UIButton *myButton;
뿐만 아니라 당신의 .H 파일을 자신의 재산에있는 UIButton의 IBOutlets를 정의하고
같은 방법을 구현할 수하는 .m 파일에-(IBAction) browse : (id) sender;
같은 방법 수
-(IBAction) browse : (id) sender{
if((UIButton *)sender == myButton){/*add the action here*/}
}
원하는 많은 버튼에 대해 메소드에 if 문을 추가하십시오. 모든 개별 버튼의 IBOutlet과 선택기 찾아보기를 연결하십시오.
메모리 누수를 방지하기 위해 dealloc 메소드에서 IBOutlet을 해제하도록 기억하십시오.
희망이 도움이됩니다!
+1 받아 들인 것보다 훨씬 철저한 대답. –