Прежде чем задать этот вопрос, я много искал, но не смог найти подходящий ответ.
Только один RadioButton можно выбрать для группы столбцов в UITableView
У меня есть UITableView
с n
количество столбцов.
Дело в том, что столбец группируется в соответствии с ключом. Поэтому мой заголовок UITableView разделен на два, один для column group
, и эта группа столбцов делится на columns
.
Я создал пользовательский класс для cell
, там я показываю radio button
в каждом столбце.
Код:
В cellForRowAtIndexPath
метод:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
GridTableViewCell *cell = nil; // My custom class for cell
CGFloat startX = 230;
if (cell == nil)
{
cell = [[GridTableViewCell alloc] initWithStyle1:UITableViewCellStyleDefault reuseIdentifier:@"Cell" withRows:[self.rowHeaderArray objectAtIndex:indexPath.row]];
for (int i = 0; i < [self.groupColumNmeArray count]; i++) { // groupColumNmeArray contains the Column Group name
NSArray *values = [_subColumnDict objectForKey:[self.groupColumNmeArray objectAtIndex:i]]; // subColumnDict contains the value for each column
self.originalDataArray = [CustomTableHeaderParser parseColumnInfo:values];// Parsing the values array for getting column name, type, width etc
for (CustomTableColumn *column in self.originalDataArray)
{
switch (column.columnType) // acc. to column type display the cell with values.
{
case RadioBtn:
{
_btTemp = [[UIButton alloc]initWithFrame:CGRectMake(startX, 2, subCellWidth , 40)];
[_btTemp setTag:indexPath.row];//indexPath.row];
[_btTemp addTarget:self action:@selector(radioButtonsClicked:) forControlEvents:UIControlEventTouchUpInside];
[_btTemp setImage:[UIImage imageNamed:@"radio-off.png"] forState:UIControlStateNormal];
[_btTemp setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
_btTemp.titleLabel.font =[UIFont systemFontOfSize:14.f];
[self.radioButtons addObject:_btTemp];
[cell addSubview:_btTemp];
}
break;
startX += 2+subCellWidth;
}
}
}
cell.selectedBackgroundView = [[UIView alloc] initWithFrame:cell.frame];
cell.selectedBackgroundView.opaque = YES;
return cell;
}
Радио метод нажатия кнопки действия;
-(IBAction) radioButtonsClicked:(UIButton *) sender {
if ([sender isSelected]) {
[sender setSelected: NO];
[sender setImage:[UIImage imageNamed:@"radio-off.png"] forState:UIControlStateNormal];
} else {
[sender setSelected: YES];
[sender setImage:[UIImage imageNamed:@"radio-on.png"] forState:UIControlStateNormal];
}
NSLog(@"BUTTON TAG %ld",(long)sender.tag);
}
Так что я в состоянии сделать выбор для радио кнопок во всех столбце, но на самом деле то, что я хочу Для каждой группы столбцов только одна кнопка радио выбирается.
Может кто-нибудь мне помочь. Любая помощь будет очень заметной.
Вы хотите выполнить как это http://stackoverflow.com/questions/40049590/reusing-cell-doesnt-work-well-tableview/40058046#40058046 –
Нет. Для меня выбор/отмена выбора работает отлично, но что я хочу сказать, что если одна из моих столбцовгруппы имеет три подкаталога, поэтому я создал кнопки в каждой подэлементе, но я хочу выбрать только одну кнопку под этой группой столбцов –
в вашей ячейке у вас есть одна группа, которая является правой кнопкой? и вы хотите разрешить только один выбор для одной ячейки –