2013-05-27 46 views
-1

我有一個UITableview,並在TableView I中填充了json數據。我已經實現了一個多選的tableview代碼,用一個複選標記來檢查碰到的表格單元格。如何判斷在多選UITableview中使用複選標記選擇哪個UITableCell。 Objective C

我的問題是如何判斷我選擇了哪些tableview單元格,以及如何將操作放入選定的表格視圖單元格中?

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 
{ 
return self.json2.count; 
} 

-(UITableViewCell *) tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
static NSString *CellIdentifier = @"CellIdentifier"; 

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 

if (cell == nil) { 
    cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier] ; 
} 

cell.textLabel.text = self.json2[indexPath.row][@"SurveyName"]; 

//cell.detailTextLabel.text = self.json1[indexPath.row][@"AssetDesc"]; 

// Sets the accessory for the cell 
cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator; 

return cell; 

} 

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { 

UITableViewCell *thisCell = [tableView cellForRowAtIndexPath:indexPath]; 


if (thisCell.accessoryType == UITableViewCellAccessoryNone) { 
    thisCell.accessoryType = UITableViewCellAccessoryCheckmark; 

}else{ 
    thisCell.accessoryType = UITableViewCellAccessoryNone; 

} 
} 

- (UITableViewCellAccessoryType)tableView:(UITableView *)tableView accessoryTypeForRowWithIndexPath:(NSIndexPath *)indexPath { 

//add your own code to set the cell accesory type. 
return UITableViewCellAccessoryNone; 
} 

所以通常如果我是從tableview中的細胞進行賽格瑞我會做到以下幾點:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
// Perform segue 
[tableView deselectRowAtIndexPath:indexPath animated:YES]; 
[self performSegueWithIdentifier: @"showSurveyForm" sender:self]; 
} 

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { 
if ([segue.identifier isEqualToString:@"showSurveyForm"]) { 
    // NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow]; 
    CameraViewController *destViewController = segue.destinationViewController; 

    // Hide bottom tab bar in the detail view 
    destViewController.hidesBottomBarWhenPushed = YES; 
    destViewController.surveyQuestionId = self.surveyQuestionIDParsed; 
    destViewController.jsonTitleforSurvey = self.json2; 
    destViewController.surveyTitleAssetId = self.assetSurvey; 

    NSLog(@"Survey ID for Survey: %@", self.surveyQuestionIDParsed); 
    NSLog(@"Survey name titile: %@", self.json2); 
    NSLog(@"Asset ID for Title: %@", self.assetSurvey); 

} 

else if ([segue.identifier isEqualToString:@"showCameraRoll"]) { 
    // NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow]; 

    // Hide bottom tab bar in the detail view 
} 

else if ([segue.identifier isEqualToString:@"showJsonData"]) { 
    // NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow]; 

} 

else if ([segue.identifier isEqualToString:@"testPickerDemo"]) { 
    // NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow]; 

} 
} 

我想作一個賽格瑞在我的UITableView選擇多選定單元格後。

例如我做了一個選擇並檢查了2行。我想捕獲或在我的nslog中看到哪些tableview單元格被選中,所以我可以做另一個json調用,並基於選定的行繼續。

我知道如何調用和解析json並製作一個segue。

enter image description here

+0

你解決了這個問題嗎? – Bhavin

+0

@Vin。對不起,還沒有。當我按下選定的單元格時,我只獲取我的ID或數組。我反而想使用一個按鈕,並在推後告訴我哪些行被選中。 –

+0

那又怎麼了?只需將'indexPath.row'添加到'selArray'(顯示在我的Answer中)和'-onButtonClick'中,就可以使用該數組。希望你得到我! :) – Bhavin

回答

3

您可以通過修改-didSelectRowAtIndexPath是這樣的:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
    { 
     UITableViewCell *thisCell = [tableView cellForRowAtIndexPath:indexPath]; 
     NSString *selStr = [yourSourceArray objectAtIndex:indexPath.row]; 
--->  NSMutableArray *selArray = [[NSMutableArray alloc] init]; //Write this line in viewDidLoad method. 
     if (thisCell.accessoryType == UITableViewCellAccessoryNone) 
     { 
      thisCell.accessoryType = UITableViewCellAccessoryCheckmark; 
      [selArray addObject:selStr]; 
     } 
     else 
     { 
      thisCell.accessoryType = UITableViewCellAccessoryNone; 
      [selArray removeObject:selStr]; 
     } 
     NSLog(@"selArray :: %@",selArray); 
    } 

UPDATE:

它會給你的陣列選定行的爲textLabel的文字。然後你就可以在-yourButtonPressed方法

- (IBAction)yourButtonPressed:(id)sender; 
{ 
    NSLog(@"selArray :: %@",selArray); 
} 

好運使用它!

+0

謝謝,但它只記錄我按下的最後一個單元格的ID,而不是我按下按鈕時選擇的所有單元格的ID? –

+0

@BlakeLoizides:在viewDidLoad方法中寫第3行。 – Bhavin

+0

哇。那就是訣竅。非常感謝你的幫助。我非常感謝你,因爲你已經幫了我很大的忙。謝謝。 –

相關問題