2011-03-30 5 views
0

프로그래밍 방식으로 만든 UIButton 객체 (둥근 사각형 유형)가 포함 된 뷰가 있지만 그 중 일부 정보를 저장해야합니다. 각 버튼을 식별합니다. 태그를 사용하여 잘하고 있었지만 숫자가 너무 많았습니다. 기본적으로 각 버튼과 관련된 정보를 NSString으로 가지고 싶습니다. 그건 그렇고, 라벨을 찍은, 나는 그것을 사용할 수 없습니다. 가장 간단하고 빠른 방법은 무엇입니까? UIButton을 서브 클래스 화하고 stringTag와 같은 자체 속성을 추가해야합니까? 나는 아직 obj-c에 능숙하지 못하며 어딘가에 고통을 느낍니다. 내 UIButtons에 추가 문자열을 저장할 수있는 더 간단한 방법이 있습니까? 모든 조언을 미리 미리 감사드립니다.UIButton 간단한 하위 클래스 (태그와 같은 NSString 속성이 있어야 함)

답변

1

하위 클래스를 하위 클래스로 지정하면 정말 고통 스럽습니다. UIButton은 추상 클래스이기 때문에 예상대로 작동하지 않습니다. 그러므로 완전히 작동하는 버튼을 만들기 위해서는 버튼이 Apple 서브 클래스가하는 모든 것을 수행하는 데 필요한 몇 가지 메소드를 오버라이드해야 할 수 있습니다. 대신 저장 용량을 추가하기 만하면 associative references을 사용할 수 있습니다. 기능을 사용하려면 #import <objc/runtime.h>해야합니다.

이 작업을 수행하는 가장 좋은 방법은 문자열 상수 NSString *const buttonTagName = @"com.youapp.buttonTag";을 정의하고이 태그를 키 objc_setAssociatedObject(button, buttonTagName, tagForCurrentButton, OBJC_ASSOCIATION_RETAIN);으로 저장하는 것입니다.

+0

감사합니다. 감사합니다, 이것이 가능하다는 것을 몰랐습니다. 내가 원하는 것을 성취 할 수있는 가장 간단한 방법 인 것처럼 보입니다. –

0

일부 ID 정보가있는 NSString을 추가하면 UIButton 하위 클래스가 너무 많이 엉켜지지 않아야한다고 생각합니다. 적어도 시도해보기 쉽습니다. 여기서 10 줄의 코드를 말합니다. UIButton을 서브 클래 싱하고 initWithFrame 메서드를 재정의 한 다음 제대로 작동하도록했습니다. 그러나 그것은 사실입니다. 고통스럽고 왜 저에게 묻지 않았습니까?

+0

네, 이전에 uibutton을 하위 클래스로 분류 한 적이 없었으며 여러 곳에서 읽었습니다. 어쨌든이 작업을 끝내면 사용자 정의 단추를 그릴 수 있습니다. 답변 주셔서 감사합니다. –

관련 문제