#iphone
#iPhone
Вопрос:
Хай, я печатаю флажок для каждой строки.Но когда мы устанавливаем флажок any, будет выбран только флажок last cell.Ниже приведен код для печати флажков и ежедневных, еженедельных, ежемесячных данных.
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [[UITableViewCell alloc]init];
cell = [self getCellContentView:CellIdentifier];
UILabel *lblTemp1 = (UILabel *)[cell viewWithTag:1];
UILabel *lblTemp2 = (UILabel *)[cell viewWithTag:2];
UILabel *lblTemp3 = (UILabel *)[cell viewWithTag:3];
UILabel *lblTemp4 = (UILabel *)[cell viewWithTag:4];
checkButton=[UIButton buttonWithType:UIButtonTypeCustom];
checkButton.frame = CGRectMake(5,30, 15, 10);
[checkButton addTarget:self action:@selector(SelectCheckBox) forControlEvents:UIControlEventTouchUpInside];
pictureimageView=[[UIImageView alloc]initWithFrame:CGRectMake(20, 5, 100, 60)];
//pictureimageView=[[UIImageView alloc]initWithFrame:CGRectMake(2, 3, 65, 65)];
[pictureimageView.layer setBorderColor:[[UIColor grayColor] CGColor]];
[pictureimageView.layer setShadowColor:[[UIColor grayColor] CGColor]];
[pictureimageView.layer setMasksToBounds:YES];
[pictureimageView.layer setBorderWidth:1.5];
[pictureimageView.layer setCornerRadius:5.0];
[pictureimageView.layer setShadowRadius:1.0];
[pictureimageView.layer setShadowOpacity:3.0];
if(selectedSegment==0)
{
databasefields=[eventData objectAtIndex:indexPath.row];
lblTemp1.text=databasefields.DBtitle;
lblTemp2.text=databasefields.DBlocation;
lblTemp3.text=databasefields.DBdate ;
lblTemp4.text=databasefields.DBtime;
//NSString *pictureString=[[NSString alloc]init];
pictureString=databasefields.DBpicture;
checkimage = [UIImage imageNamed:@"checkbox.PNG"];
[checkButton setImage:checkimage forState:UIControlStateNormal];
pictureimageView.image = [UIImage imageWithContentsOfFile:pictureString];
[cell.contentView addSubview:checkButton];
[cell.contentView addSubview:pictureimageView];
}
else
if(selectedSegment==1)
{
databasefields=[eventData objectAtIndex:indexPath.row];
lblTemp1.text=databasefields.DBtitle;
lblTemp2.text=databasefields.DBlocation;
lblTemp3.text=databasefields.DBdate;
lblTemp4.text=databasefields.DBtime;
pictureString=[[NSString alloc]init];
pictureString=databasefields.DBpicture;
checkimage = [UIImage imageNamed:@"checkbox.PNG"];
pictureimageView.image = [UIImage imageWithContentsOfFile:pictureString];
[cell.contentView addSubview:checkButton];
[cell.contentView addSubview:pictureimageView];
}
else if(selectedSegment==2)
{
databasefields=[eventData objectAtIndex:indexPath.row];
lblTemp1.text=databasefields.DBtitle;
lblTemp2.text=databasefields.DBlocation;
lblTemp3.text=databasefields.DBdate;
lblTemp4.text=databasefields.DBtime;
pictureString=[[NSString alloc]init];
pictureString=databasefields.DBpicture;
checkimage = [UIImage imageNamed:@"checkbox.PNG"];
[checkButton setImage:checkimage forState:UIControlStateNormal];
pictureimageView.image = [UIImage imageWithContentsOfFile:pictureString];
[cell.contentView addSubview:checkButton];
[cell.contentView addSubview:pictureimageView];
}
// Configure the cell...
return cell;
}
-(void) SelectCheckBox
{
if (checkboxSelected == 0){
[checkButton setSelected:YES];
checkimage = [UIImage imageNamed:@"checkbox-on.PNG"];
[checkButton setImage:checkimage forState:UIControlStateNormal];
checkboxSelected = 1;
} else {
[checkButton setSelected:NO];
checkimage = [UIImage imageNamed:@"checkbox.PNG"];
[checkButton setImage:checkimage forState:UIControlStateNormal];
checkboxSelected = 0;
}
;
}
Пожалуйста, дайте мне решение для установки каждого флажка
Ответ №1:
Пожалуйста, прочтите Руководство по программированию представления таблиц, чтобы узнать о ячейках. В этом случае, похоже, что checkButton
это переменная экземпляра делегата таблицы, и это то, что вы изменяете в своем -SelectCheckBox
методе. Однако эта переменная указывает только на кнопку в ячейке, которую вы создали совсем недавно. Если вы хотите работать с определенной ячейкой, вы должны сначала получить ячейку для этой строки, а затем найти соответствующую кнопку флажка. Один из способов сделать это — присвоить tag
свойству определенное значение при настройке ячейки. Затем вы можете запросить у ячейки вложенный просмотр, в котором есть этот тег.