答案 0 :(得分:1)
要保持选择按钮状态,您需要在dictionary
上为单元格存储选择信息。因此,一旦重新加载单元格,您可以根据您拥有的信息应用选择设置。
没有直接的方法(即使你现在应该使用它,因为它会导致记忆滥用),以保持它一直被选中。
答案 1 :(得分:1)
我已根据您的要求更新了您示例的现有代码,请找到以下网址下载代码并进行审核。
链接:https://www.dropbox.com/s/6xsr4o88khyijun/HorizontalTables.zip?dl=0
突出显示我已经完成的代码。
1)在NSMutableArray
班级中取HorizontalTablesAppDelegate
* arrSelection属性
2)在ArticleListViewController_iPhone
类viewDidLoad
方法中填写arrSelection的数据。
for (NSInteger i = 0; i < [self.articleDictionary.allKeys count]; i++)
{
HorizontalTableCell_iPhone *cell = [[HorizontalTableCell_iPhone alloc] initWithFrame:CGRectMake(0, 0, 320, 416) tag:i];
categoryName = [sortedCategories objectAtIndex:i];
currentCategory = [self.articleDictionary objectForKey:categoryName];
cell.articles = [NSArray arrayWithArray:currentCategory];
if(i == 0)
appDelegate.arrSelection = [[NSMutableArray alloc] init];
NSMutableArray *arrSubData = [[NSMutableArray alloc] init];
for(NSInteger j=0; j<currentCategory.count; j++)
[arrSubData addObject:[NSNumber numberWithBool:NO]];
[appDelegate.arrSelection addObject:arrSubData];
[arrSubData release];
[self.reusableCells addObject:cell];
[cell release];
}
3)HorizontalTableCell_iPhone
类cellForRowAtIndexPath
方法
NSMutableArray *arrSelectionInfo = appDelegate.arrSelection[tableView.tag];
BOOL isSelect = [arrSelectionInfo[indexPath.row] boolValue];
if(isSelect)
[cell.btnSelection setBackgroundColor:[UIColor greenColor]];
else
[cell.btnSelection setBackgroundColor:[UIColor whiteColor]];
didSelectRowAtIndexPath
方法
NSMutableArray *arrUpdate = appDelegate.arrSelection[tableView.tag];
[arrUpdate replaceObjectAtIndex:indexPath.row withObject:[NSNumber numberWithBool:YES]];
[tableView reloadData];
希望这对你有用。