【问题标题】:how can i save the name of UIButton in string?如何将 UIButton 的名称保存在字符串中?
【发布时间】:2013-08-20 07:11:26
【问题描述】:

我有一个以

命名的按钮
UIButton *button1;

如何在字符串中保存“button1”?或者我能不能保存它?

【问题讨论】:

  • 如果您解释为什么要这样做,我们将能够更好地为您提供帮助。
  • 其实我的项目里有几十个按钮,都是按一个角色的名字保存的,我需要在这些按钮上播放声音,所以这里我需要每个按钮的名字,通过关于它的名字,我可以播放声音,希望你明白。
  • tag 的值和UIButton 的集合数组呢?

标签: ios string uibutton


【解决方案1】:

您只能将其'地址保存在内存中:NSString *but1=[NSString stringWithFormat:@"%@",&button1];,但如果您需要获得按钮的唯一指示符,您可以使用其'标签:button1.tag 或者您可以创建 NSMutableDictionary 并为键添加按钮,这等于它们的名称。

【讨论】:

    【解决方案2】:

    你可以像这样创建一个宏:

    #define getVariableName(var) [NSString stringWithFormat:@"%s", #var]
    

    并使用它:

    NSLOG(@"My variable name is %@", variableName(self.button1));
    

    你会看到

    My variable name is button1
    

    【讨论】:

      【解决方案3】:

      不,您不能这样做,因为 UIButton 是一个对象,而您将 UIButton 声明为 button1。这将保持静态,因为它将引用保存在内存中。

      NSString 是你可以随时更改的东西,但对于对象和变量声明你不能更改它。

      【讨论】:

        【解决方案4】:

        您在字符串中获得按钮标题,但未在字符串中保存按钮插座您使用此按钮在 id 中保存按钮插座您保存按钮标题

          NSString *btn = Mybutton.titleLabel.text;
        

        用于保存按钮插座

           Iboutlet Uibutton *myButton;
            id *myBtn=myButton;
        

        【讨论】:

        • 这仍然不是问题所要求的。
        • 但你也不知道他想说什么:-)
        • @ waseem shah 先生,我非常清楚如何将 titlelabel 文本保存在字符串中我已经问过别的问题了,我如何将变量名保存在字符串中
        【解决方案5】:

        检查一下

        导入

        #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

        查看此示例演示

        ButtonDemo

        【讨论】:

        • [sne addTarget:self action:@selector(btnItemListClicked:) forControlEvents:UIControlEventTouchDown];
        • 随心所欲,只需在按钮操作方法中编写此代码即可。
        • 它的返回空值
        • 我已经测试过了,实际上在这种情况下有一个问题是:它显示了通过 xib 文件制作的按钮的名称,它没有显示以编程方式制作的按钮的名称.
        • 我遇到了问题,实际上不是那个,我之前提到的,它有效..thanx :)
        猜你喜欢
        • 2022-10-07
        • 1970-01-01
        • 1970-01-01
        • 2020-02-11
        • 1970-01-01
        • 2021-11-28
        • 2015-10-05
        • 2016-12-23
        • 2023-02-07
        相关资源
        最近更新 更多