という名前のボタンがあります
UIButton *button1;
「button1」を文字列に保存するにはどうすればよいですか? または私はそれを保存することができますか?
いいえ、UIButton はオブジェクトであり、UIButton を button1 として宣言しているため、これを行うことはできません。これは参照をメモリに保持するため、静的なままになります。
NSString はいつでも変更できるものですが、オブジェクトと変数の宣言については変更できません。
次のようなマクロを作成できます。
#define getVariableName(var) [NSString stringWithFormat:@"%s", #var]
そしてそれを使用します:
NSLOG(@"My variable name is %@", variableName(self.button1));
わかるでしょ
My variable name is button1
ボタン タイトルを文字列で取得しますが、ボタン アウトレットを文字列に保存しません これを使用して ID にボタン アウトレットを保存します ボタン タイトルを保存します
NSString *btn = Mybutton.titleLabel.text;
セーブボタンアウトレット用
Iboutlet Uibutton *myButton;
id *myBtn=myButton;
これをチェックして
輸入
#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
このサンプルデモを確認してください