2017-07-15 40 views
0

在下面的實現中,我可以跟蹤每個選定單元格的indexPath和項目總數選擇整個tableView。每個部分中選擇的項目數

我想知道我怎麼能夠得到每一節中選擇的項目數?

- (void)selectedItem: (UITableView *)tableView { 
    NSArray <NSIndexPath*> *selectedIndexPaths = [tableView indexPathsForSelectedRows]; 
    for (NSIndexPath *indexpath in selectedIndexPaths) { 
     NSLog(@"Section index : %ld", indexpath.section); 
     NSLog(@"Row index : %ld", indexpath.row); 
    } 
} 

這裏是打印輸出,你可以看到,我選擇在第0 2項,並在第1項1.

po [tableView indexPathsForSelectedRows] 
<__NSArrayI 0x1744428b0>(
<NSIndexPath: 0xc000000000400016> {length = 2, path = 0 - 2}, 
<NSIndexPath: 0xc000000000c00016> {length = 2, path = 0 - 6}, 
<NSIndexPath: 0xc000000001000116> {length = 2, path = 1 - 8} 
) 
+0

我想你需要從indexpath手動執行,你可以請示例 –

+0

? – hotspring

+0

要麼你管理你自己的單元格選擇的部分明智或您需要循環indexPaths並將它分組 –

回答

1
NSMutableDictionary *selectedRowsInSectionDictionary = [NSMutableDictionary dictionary]; 
NSArray <NSIndexPath*> *selectedIndexPaths = [tableview indexPathsForSelectedRows]; 
for (NSIndexPath *indexpath in selectedIndexPaths) { 
    NSInteger numberOfSelectedRows = [[selectedRowsInSectionDictionary objectForKey: @(indexpath.section)] integerValue]; 
    numberOfSelectedRows++; 
    [selectedRowsInSectionDictionary setObject:@(numberOfSelectedRows) forKey: @(indexpath.section)]; 
} 

您將得到一個選擇的行數部分編號作爲鍵和該部分上選定行的數量作爲selectedRowsInSectionDictionary字典中的值。

+0

僅供參考 - 您可以用'@(numberOfSelectedRows)'替換'[NSNumber numberWithInteger:numberOfSelectedRows]'。 – rmaddy

+0

而且您不需要將該部分轉換爲密鑰的字符串。使用'@(indexpath.section)'作爲鍵。如果要將字典寫入plist文件,字典鍵只需要是字符串。 – rmaddy

+0

@rmaddy,有沒有一種方法可以使用一個單一的行代碼,通過'valueForKeyPath'中的'@ count'功能獲得每個部分中selectedItem的數量。或者有更好的想法? – hotspring

相關問題