簡體   English   中英

如何保存TableView單元格的數據

[英]How to save data of tableview cell

我在表格視圖中使用自定義復選框按鈕,並希望將所選單元格的數據保存到可變數組中。...有人可以幫助我...謝謝

創建一個可變數組來存儲您選擇的數據,將其命名為“ yourSeparatedData”,在cellForRowAtIndexPath中設置您的復選框標簽,並將onCheck:方法設置為目標。 該代碼將如下所示:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    NSString *CellIdentifier = @"setMe";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil)
    {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyle………
    }
    checkBox = [UIButton buttonWithType:UIButtonTypeRoundedRect];
    checkBox.frame = CGRectMake(customizeMe);
    if(yourSeparatedData && [yourSeparatedData indexOfObject:[yourTableViewDataSource objectAtIndex:indexPath.row]] != NSNotFound)
    {
        [checkBox setBackgroundImage:[UIImage imageNamed:@"check.png"] forState:UIControlStateNormal];
    }
       else {
        [checkBox setBackgroundImage:[UIImage imageNamed:@"unCheck.png"] forState:UIControlStateNormal];
        }
        [checkBox addTarget:self action:@selector(onCheck:) forControlEvents:UIControlEventTouchUpInside];
        [checkBox setTag:indexPath.row];

        [cell addSubview:checkBox];
        return cell;

}

-(void)onCheck:(id)sender {
     if(yourSeparatedData && [yourSeparatedData indexOfObject:[yourTableViewDataSource objectAtIndex:[sender tag]]] != NSNotFound)
       {
        [sender setBackgroundImage:[UIImage imageNamed:@"unCheck.png"] forState:UIControlStateNormal];
        [yourSeparatedData removeObject:[yourTableViewDataSource objectAtIndex:[sender tag]]];
       }
      else {
        [sender setBackgroundImage:[UIImage imageNamed:@"check.png"] forState:UIControlStateNormal];
        [yourSeparatedData addObject:[yourTableViewDataSource objectAtIndex:[sender tag]]];
      }
      [yourTableView reloadData];
 } 

此代碼未經測試,您使用的是復選框,因此我假設您不僅要分離一個數據,在選擇的最后,您將擁有'yourSeparatedData'以及從tableView中拾取的對象。

您可以嘗試在UITableView單元格中針對按鈕按鈕進行自定義操作,也可以使用放置復選框圖像,然后單擊以更改圖像,如此處所檢查的代碼

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:   (NSIndexPath *)indexPath{
UITableViewCell *cell=[tableView dequeueReusableCellWithIdentifier:@"identifire"];
 cell=[[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:@"identifire"] autorelease];
    cell.detailTextLabel.text=[id_Array objectAtIndex:indexPath.row];
    cell.detailTextLabel.hidden=YES;
    button = [UIButton buttonWithType:UIButtonTypeCustom];
    NSString *path1 = [[NSBundle mainBundle] pathForResource:@"n_cross" ofType:@"png"];
    UIImage *buttonImage1 = [[UIImage alloc] initWithContentsOfFile:path1];
    [button setImage:buttonImage1 forState:UIControlStateNormal];
    [button addTarget:self 
               action:@selector(customActionPressed:)
     forControlEvents:UIControlEventTouchDown];
    [button setTitle:@"Custom Action" forState:UIControlStateNormal];
    button.frame = CGRectMake(245.0f, 20.0f, 40.0f, 40.0f);
    [cell addSubview:button];
    [buttonImage1 release];
        CGRect imageFrame=CGRectMake(10,8,50,50);
        self.cellimage=[[[UIImageView alloc] initWithFrame:imageFrame] autorelease];
        self.cellimage.image=[imageIdArray objectAtIndex:indexPath.row];
        [cell.contentView addSubview:self.cellimage];
        return cell;
}
-(void)customActionPressed :(id)sender
{
//Get the superview from this button which will be our cell
UITableViewCell *owningCell = (UITableViewCell*)[sender superview];
NSIndexPath *cell = [_tableView indexPathForCell:owningCell];
NSString *uid=[id_Array objectAtIndex:cell.row];
[id_Array removeObjectAtIndex:cell.row];
[_tableView reloadData];
[self performSelectorInBackground:@selector(ignoreRequest:) withObject:uid];
}

在這里,我有一個id_Array,在選擇一個單元格時,我只是刪除了該索引處的對象

您必須手動執行此操作,UITableView或UITableViewController中沒有工具可以自動執行此操作。

當用戶選擇任何單元格時,則可以在didSelectRowAtIndexPath中動態添加所選對象。

[someMutableArr addObject:[tableArr objectAtIndex:indexPath.row]];

嘗試這個

- (void)onButtonClick {

    int numberOfSections = [tableView numberOfSections];

    for (int section = 0; section < numberOfSections; section++) {

        int numberOfRows = [tableView numberOfRowsInSection:section];

        for (int row = 0; row < numberOfRows; row++) {

            NSIndexPath *indexPath = [NSIndexPath indexPathForRow:row inSection:section];
            UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];

            if (cell.accessoryType == UITableViewCellAccessoryCheckmark) {

                // Cell is selected
               //here you can add that values into an array
            } else {

                // Cell is not selected
            }
        }
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM