2013-04-08 43 views
13

所以我寫了這個代碼把,我想選擇的行旁邊的複選標記,因爲我想多選行如何從UITableView中獲取選定的行?

UITableViewCell *cell = [tableView cellForRowAtIndexPath:path]; 

if (cell.accessoryType == UITableViewCellAccessoryCheckmark) { 
    cell.accessoryType = UITableViewCellAccessoryNone; 
} else { 
    cell.accessoryType = UITableViewCellAccessoryCheckmark; 
} 

,但是當我使用的方法:

NSArray *selectedIndexPaths = [self.LightsView indexPathsForSelectedRows]; 

它只是變得我點擊的最後一行。選中標記不選擇它?

+1

不,選擇的是被竊聽最後,並沒有未選擇還行。與細胞的配件無關。你需要跟蹤「選擇」(讓我們稱他們檢查,這將是更合適的)行自己。 – 2013-04-08 18:45:44

+2

還要確保你的'tableView:cellForRowAtIndexPath:'識別單元可以被重用,因此,它將不得不重置該行的'accessoryType'(視情況而定);不要試圖依賴'accessoryType'來知道你是否「檢查」了一行。有一個單獨的模型支持你的tableview跟蹤哪些行被「檢查」,並讓你的上面的代碼更新該模型以及UI,並且也有'tableView:cellForRowAtIndexPath:'引用該模型。 – Rob 2013-04-08 18:48:19

回答

21

對於indexPathsForSelectedRows:方法才能正常工作,您必須配置表視圖,允許細胞的多重選擇:

tableView.allowsMultipleSelection = YES; 
相關問題