如何在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中的按钮数组中检索所选按钮的行和列的主要内容,如果未能解决你的问题,请参考以下文章
如何通过单击pyqt5中的按钮来制作qlineedit的动态行和列?
如果 MATLAB Rb2020 中的行和列维度不一致,如何取消嵌套具有嵌套数据和文本内容的元胞数组?