이 나는 버튼이 어떻게 문자열에 'Button1을'절약 할 수 있습니다어떻게 문자열에 UIButton의 이름을 저장할 수 있습니까?
에 의해 명명했다? 아니면 내가 그것을 저장할 수 있습니까?
이 나는 버튼이 어떻게 문자열에 'Button1을'절약 할 수 있습니다어떻게 문자열에 UIButton의 이름을 저장할 수 있습니까?
에 의해 명명했다? 아니면 내가 그것을 저장할 수 있습니까?
는 확인이
수입
#import "objc/runtime.h"
-(IBAction)btnItemListClicked:(id)sender
{
UIButton *btn=sender;
NSString *name = nil;
uint32_t ivarCount;
Ivar *ivars = class_copyIvarList([self class], &ivarCount);
if(ivars)
{
for(uint32_t i=0; i<ivarCount; i++)
{
Ivar ivar = ivars[i];
id pointer = object_getIvar(self, ivar);
if(pointer == sender)
{
name = [NSString stringWithUTF8String:ivar_getName(ivar)];
break;
}
}
free(ivars);
}
NSLog(@"%@", name);
}
출력은 다음과 같습니다 이름의
인쇄 설명 :
btnconferenceCall
확인이 샘플 데모
,을 저장 버튼 제목
NSString *btn = Mybutton.titleLabel.text;
저장이를 이용하여 아이디에 버튼 콘센트을 저장 문자열에 버튼 콘센트를 저장하지 메모리의 주소 만 : NSString *but1=[NSString stringWithFormat:@"%@",&button1];
이지만 버튼의 고유 한 표시기를 가져와야하는 경우 해당 태그를 사용할 수 있습니다. 태그 : button1.tag
또는 NSMutableDictionary를 만들고 키에 대한 버튼을 추가 할 수 있습니다. 이름.
당신은이 같은 매크로를 만들 수 있습니다
#define getVariableName(var) [NSString stringWithFormat:@"%s", #var]
을 그리고 사용 : 당신은
My variable name is button1
없음이 작업을 수행 할 수 없습니다 볼 수 있습니다
NSLOG(@"My variable name is %@", variableName(self.button1));
을, 같은 UIButton은 객체이며 UIButton을 button1로 선언하고 있습니다. 메모리에 참조를 보유하고 있기 때문에 정적 인 상태로 유지됩니다.
NSString은 언제든지 변경할 수 있지만 Object 및 varible 선언의 경우 변경할 수 없습니다.
이유를 설명하면 우리가 더 잘 도와 줄 수 있습니다. – Abizern
확인하기 http://stackoverflow.com/questions/15879357/how-to-get-instance-variable-name, http://stackoverflow.com/questions/6615826/get-property-name-as-a-string – Kalpesh
사실 저는 프로젝트의 버튼이 수십 가지입니다. 캐릭터의 이름으로 저장됩니다.이 버튼에 사운드를 재생해야하므로, 여기에서 모든 버튼의 이름이 필요합니다.이를 통해 사운드를 재생할 수 있습니다. 그 이름에 관해서는, 당신이 엄마 포인트를 얻길 바랍니다. – Steve