2011-08-03 80 views
0

我已經創建了一個簡單的tableView,有5行。並在單元格上使用了UITableViewCellAccessoryCheckmark。來自UITableViewCellAccessoryCheckmark的操作

我想推一個按鈕,並根據什麼單元格'檢查',而不是做什麼的行動。用戶可以選擇none,all,1等。

如何檢查/查看是否使用UITableViewCellAccessoryCheckmark的單元格,以及哪些單元格使用的是UITableViewCellAccessoryNone?

感謝

山姆

編輯!

我找到了一種方法來做到這一點...

在didSelectRowAtIndexPath方法我做了以下...

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { 
    // Navigation logic may go here. Create and push another view controller. 

    NSUserDefaults *loginDefaults = [NSUserDefaults standardUserDefaults]; 

    [tableView deselectRowAtIndexPath:indexPath animated:YES]; 

    UITableViewCell *oldCell = [tableView cellForRowAtIndexPath:indexPath]; 
    if (oldCell.accessoryType == UITableViewCellAccessoryCheckmark) 
    { 
     oldCell.accessoryType = UITableViewCellAccessoryNone; 

    } else { 

     UITableViewCell *newCell = [tableView cellForRowAtIndexPath:indexPath];  

     if (newCell.accessoryType == UITableViewCellAccessoryNone) 
     { 
      newCell.accessoryType = UITableViewCellAccessoryCheckmark; 
     } 
    } 

    if ([oldCell.textLabel.text isEqualToString:@"All"]) { 

     if (oldCell.accessoryType == UITableViewCellAccessoryCheckmark) { 

      [loginDefaults setObject:@"YES" forKey:@"DownloadAll"]; 

     } else if (oldCell.accessoryType == UITableViewCellAccessoryNone) { 

      [loginDefaults setObject:@"NO" forKey:@"DownloadAll"]; 
     } 

    } else if 

小房子周圍,但我只有5件事情在我的表查看,它適用於我想要的功能。

現在在行動,我檢查中的NSUserDefaults的價值觀和工作因此

回答

0

哪些元素被選中的東西,在你的模型所屬的信息。由於表格單元格在您滾動時會被重複使用,因此表格本身無法存儲它,因爲在任何給定時間,內存中的單元格數量都不會超過您在屏幕上可以看到的數量。

因此,我建議你添加一個屬性到你的模型對象,並更新,當一個單元格被挖掘。這使您可以在模型上進行任何篩選和查詢,而不必強制UI元素存儲您的狀態,而這在設計上無法可靠。

無論如何,最終會出現奇怪的情況,比如出現在沒有預期的行中的複選標記,因爲單元實例將被重用。

另請參見問題Question 3240830,它非常相似。