从字符串数组创建的UIButton需要一个目标

时间:2019-02-13 05:20:55

标签: ios objective-c uibutton addtarget

在这里是:我正在处理一些旧代码。因此,我目前无法(切实可行)更改架构。

我在VC1中有一个文件创建字符串数组:

   NSMutableArray *arrButtons = [NSMutableArray array];
[arrButtons addObject:data];
[arrButtons addObject:share];
[VC2 showButtons:arrButtons];

然后在我的VC2代码上,我有:

-(void)showButtons:(NSMutableArray *)arrButtons {
for (int i=0; i<arrButtons.count; i++) {
    UIButton *btn = [_popupView viewWithTag:i+5000];
    [btn setTitle:[arrButtons objectAtIndex:i] forState:UIControlStateNormal];
  //this is the code I am trying out, I just need to addtarget to data, not the rest of the array.  
    if ([arrButtons containsObject:data]) {

        //this is adding to all buttons, not just data. Figure out a way to add this action to only data. 
 btn.[index: data]
    [btn addTarget:self action:@selector(arrayButtonTapped:) forControlEvents:UIControlEventTouchUpInside];
    }
}

当我们第一次将目标添加到数组中时,仅将其添加到VC1中是有意义的。但是我不能,因为创建它时,它只是一个字符串。 我想指出,按钮 DOES 会显示在屏幕上。但是我不知道如何访问数组中的特定按钮以向其添加目标。

我能提出的最佳解决方案是我需要addTarget,但是如果其他人对如何解决此类问题有任何建议或想法,我将非常感激。

p.s。我知道如何从IB连接IBAction,问题是这是100%以编程方式创建的按钮,并且在创建时,它实际上只是一个字符串,而不是按钮。因此addTarget不可用。

1 个答案:

答案 0 :(得分:0)

我认为VC2中的问题在于:

if ([arrButtons containsObject:data]) {

如果我正确理解这一点,则arrButons将始终包含 data 字符串。假设数据是表示要向其添加目标的按钮标题的变量,我将其替换为:

if ([arrButtons[i] isEqualToString: data]) {

请让我们知道它的进展。