2016-09-06 12 views

答えて

1

サンプルコードの既存コードを要件に合わせて更新しました。コードをダウンロードしてレビューするには、下のURLをご覧ください。

リンク:私はそれを行っていたコードのhttps://www.dropbox.com/s/6xsr4o88khyijun/HorizontalTables.zip?dl=0

ハイライト。

1)HorizontalTablesAppDelegateクラスのNSMutableArray * arrSelectionプロパティを取る。
2)ArticleListViewController_iPhoneクラスのarrSelectionのデータをviewDidLoadメソッドで埋めてください。 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]; 

HorizontalTableCell_iPhoneクラスに

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)は、これがあなたのために働くことを願っています。

1

ボタンの状態を維持するには、選択情報をセルのdictionaryに保存する必要があります。だから、一旦セルが再ロードされると、あなたは持っている情報に基づいて選択設定を適用することができます。

いつも選択したままにするための直接的な方法はありません(メモリ濫用につながるので、これを使用する必要があったとしても)。