如何在iOS中的按钮数组中检索所选按钮的行和列

Posted

技术标签:

【中文标题】如何在iOS中的按钮数组中检索所选按钮的行和列【英文标题】:How to retrieve the row and col of selected button in an array Of buttons in iOS 【发布时间】:2011-11-17 06:43:00 【问题描述】:

假设我使用以下代码创建了一个 2DArray 按钮:

for (NSInteger rowIndex = 0; rowIndex < 6; rowIndex++) 

        NSMutableArray *rowOfButtons = [[NSMutableArray alloc] init];
        for (NSInteger colIndex = 0; colIndex < 7; colIndex++)
           
            CGRect newFrame = CGRectMake(2+colIndex * 45, 100 + rowIndex * 40, 45, 40);

            UIButton  *calButton = [UIButton buttonWithType:UIButtonTypeCustom];
            calButton.frame = newFrame;             
            [calButton setBackgroundColor:[UIColor whiteColor]];

            [rowOfButtons addObject:calButton];

            [calButton addTarget:self action:@selector(buttonPressed:) forControlEvents:UIControlEventTouchUpInside];           
            [self.view addSubview:calButton];             
        
        [m_button2DArray addObject:rowOfButtons];

如何在该网格中的任意位置找出单击按钮的行和列?

【问题讨论】:

使用uibutton的tag属性 嘿罗宾,能否请您用代码 sn-p 详细说明一下,这会有所帮助.. 我已经用代码 sn-p 更新了我的答案。试试看吧。 【参考方案1】:

为每个按钮设置标签,如下所示。

for (NSInteger rowIndex = 0; rowIndex < 6; rowIndex++) 

    NSMutableArray *rowOfButtons = [[NSMutableArray alloc] init];
    for (NSInteger colIndex = 0; colIndex < 7; colIndex++)
       
        CGRect newFrame = CGRectMake(2+colIndex * 45, 100 + rowIndex * 40, 45, 40);

        UIButton  *calButton = [UIButton buttonWithType:UIButtonTypeCustom];
        calButton.frame = newFrame;             
        [calButton setBackgroundColor:[UIColor whiteColor]];

        NSInteger tag = (rowIndex * 10) + colIndex;
        calButton.tag = tag;


    [calButton addTarget:self action:@selector(buttonPressed:) forControlEvents:UIControlEventTouchUpInside];  

        [rowOfButtons addObject:calButton];

        [self.view addSubview:calButton];             
    
     [m_button2DArray addObject:rowOfButtons];
    [rowOfButtons release];
  

并且在 buttonPressed: 方法中,通过以下方法查找按下了哪个按钮。

-(void)buttonPressed:(id)sender

    NSInteger tag = [sender tag];
    int row = tag / 10;
    int col = tag % 10;
    //do what you required for the particular button

【讨论】:

为什么是rowIndex*10 - 为什么不是rowIndex*6 这只是为了方便计算。我们可以有rowIndex *6。没有问题。 只是想知道如果有 11 行你会怎么做 ;) 很好的编辑展示了如何从标签中取出行和列。

以上是关于如何在iOS中的按钮数组中检索所选按钮的行和列的主要内容,如果未能解决你的问题,请参考以下文章

请问如何获得GridView选中行的每一列的信息?

如何通过单击pyqt5中的按钮来制作qlineedit的动态行和列?

如果 MATLAB Rb2020 中的行和列维度不一致,如何取消嵌套具有嵌套数据和文本内容的元胞数组?

如何修复 CListctrl 中的行和列重复

如何根据行Spark DataFrame的数组值创建新的行和列[重复]

在二维数组中的行和列处查找最大值