2012-03-07 143 views
2

我正在處理iOS 5項目,我正在使用表格視圖來選擇要添加到一組中的項目。 我正確地設置AllowsMultipleSelectionDuringEditing爲YES,讓左側的項目符號和contentView縮進。UITableView多重選擇,預先選擇的項目

現在,我的問題是,我有一個預先選擇的項目列表,用戶在編輯模式下進入時應該看到。我查看了文檔,但沒有找到任何有關它的信息,以便在啓用多項選擇的情況下進入編輯模式時預先選擇索引路徑列表。蘋果公司是否提供預先選擇某些項目的方法,或者我應該自行開發此功能?

回答

5

好吧,我發現瞭如何做到這一點以及良好和優雅的方式,它是簡單除了例外:

的UITableView有選擇一行的方法selectRowAtIndexPath:animated:scrollPosition:。 完成我正在尋找的最好方法是創建一個NSSetNSIndexPaths,並且在編輯模式下設置UITableView後立即迭代該設置並逐個選擇單元格。

例如以這種方式:

- (NSArray *)_preselectedIndexPaths 
{ 
    NSMutableSet *preselectedItems = [NSMutableSet set]; 
    NSUInteger s = 0, r = 0; 
    for (NSArray *section in self.data) { 
     for (id item in section) { 
      if ([item shouldBePreselected]) { //this is the condition 
       [preselectedItems addObject:[NSIndexPath indexPathForRow:r inSection:s]]; 
      } 
      r++; 
     } 
     s++; 
    } 

    return [preselectedItems allObjects]; 
} 

,然後,對選擇項目詮釋表視圖:

[self.tableView setEditing:![self.tableView isEditing] animated:YES]; 

for (NSIndexPath *ip in [self _preselectedIndexPaths]) 
    { 
     [self.tableView selectRowAtIndexPath:ip 
            animated:YES 
          scrollPosition:UITableViewScrollPositionNone]; 
    } 

我希望這可以幫助別人。