【问题标题】:how to pass data when button is clicked单击按钮时如何传递数据
【发布时间】:2013-07-25 12:43:33
【问题描述】:

假设我有 10 个按钮。对于每个按钮,我想传递一些文本......例如按钮 1、我的新按钮 2 等......

我想做的是在 NSLog 中打印此文本。

因此我创建了一个方法并将其传递给按钮。但我不知道如何将数据传递给它......

[myButton addTarget:self action:@selector(btnSelected:) forControlEvents:UIControlEventTouchUpInside];

-(IBAction)btnSelected:(id)sender {
    NSLog(@"btnSelected data is %@", sender);
    // I want to print some text for respective button here...    
}

但我没有得到...知道如何完成这项工作吗?

【问题讨论】:

    标签: ios objective-c uibutton


    【解决方案1】:

    您可以将数据与对象关联为:

    首先导入这个类:#import <objc/runtime.h>

    然后创建一个密钥为

    static char * kIndexPathAssociationKeySTR = "associated_string_key";
    

    然后将字符串关联为: ** 在这里您可以将任何类型的数据与按钮相关联,例如:NSMutableArray 或 NSString 等**

    NSString *myAttachedValue = @"This is the info I am associating with button";
    objc_setAssociatedObject(self.testBtn,
                             kIndexPathAssociationKeySTR,
                             myAttachedValue,
                             OBJC_ASSOCIATION_RETAIN);
    

    然后在您调用按钮事件的方法中访问它:

    - (IBAction)btnTouched:(UIButton *)sender {
        NSString *valueIs = (NSString *)objc_getAssociatedObject(self.testBtn, kIndexPathAssociationKeySTR);
        NSLog(@"value is : %@",valueIs);
    
    }
    

    希望对你有帮助。

    【讨论】:

      【解决方案2】:

      为按钮设置标签

      [myButton addTarget:self action:@selector(btnSelected:) forControlEvents:UIControlEventTouchUpInside];
      myButton.tag = 1;
      

      现在比较标签

      -(IBAction)btnSelected:(id)sender {
          UIButton *button = (UIButton *)
          if(button.tag == 1) { //do button 1 stuff
              NSLog(@"btnSelected data is %@", sender);
          }
      }
      

      您还可以检查 Blocks,扩展一个 uibutton 以支持块 (UIButton block equivalent to addTarget:action:forControlEvents: method?)。

      【讨论】:

        【解决方案3】:

        试试这个,

        [myButton setAccessibilityValue:@"Some text"];
        [myButton addTarget:self action:@selector(btnSelected:) forControlEvents:UIControlEventTouchUpInside];
        
        -(IBAction)btnSelected:(id)sender {
            NSLog(@"btnSelected data is %@", [sender accessibilityValue];);
            // I want to print some text for respective button here...    
        }
        

        【讨论】:

        • 从概念上讲,这是非常错误的。 UI 的可访问性选项杂乱无章?没办法……
        • @JackyBoy 而且它甚至不使用 jQuery!
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-12-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-10-22
        • 1970-01-01
        • 2016-12-27
        相关资源
        最近更新 更多