【问题标题】:UIButton created from an array of strings needs a target从字符串数组创建的 UIButton 需要一个目标
【发布时间】:2019-07-06 20:46:13
【问题描述】:

这里是:我正在处理一些遗留代码。所以我现在不能真的(可行地)改变架构。

我在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,但如果其他人对如何解决此类问题有任何指示或想法,我将不胜感激。

附言我知道如何从 IB 连接 IBActions,问题是这是一个 100% 以编程方式创建的按钮,当创建时,它实际上只是一个字符串,而不是按钮。所以addTarget 不可用。

【问题讨论】:

    标签: ios objective-c uibutton addtarget


    【解决方案1】:

    我认为VC2中的问题出在:

    if ([arrButtons containsObject:data]) {
    

    如果我理解正确,arrButons 将始终包含 data 字符串。假设 data 是代表您要添加目标的按钮的标题的变量,我会改为:

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

    请告诉我们进展如何。

    【讨论】:

    • @valeriana 怎么样了?你能解决这个问题吗?
    • 嗨,不,还没有。我仍然必须弄清楚如何只调用数据,因为它仍然将操作添加到所有按钮。所以我还在努力。一旦我有答案肯定会更新。非常感谢
    • @valeriana 在你的 VC2 代码中数据变量包含什么?
    • 嗨@RobertoGarrido 我仍在努力。数据是一个按钮。在 VC1 中创建了一个字符串数组arrButtons,然后将其传递给 VC2 并将每个字符串制成一个按钮。 data 首先是一个字符串,然后是一个按钮。
    • @valeriana 如果 data 是 VC2 中的按钮,您正试图在 NSString 数组中找到 UIButton(arrButtons 是 NSString 数组)。我认为VC2中的数据是一个字符串。
    猜你喜欢
    • 2018-12-12
    • 2023-03-16
    • 2019-02-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多