如何获取具有多个选择的tableview单元格的值?

时间:2015-12-15 06:58:09

标签: ios objective-c uitableview

我有一个tableview,其中我提供了复选标记作为多个单元格的附件。 现在我希望获得具有复选标记的所有单元格的值。

#import "HealthIssues.h"

@interface HealthIssues ()<UITableViewDataSource,UITableViewDelegate>
{
    NSIndexPath* checkedIndexPath;
}

@property (nonatomic, retain) NSIndexPath* checkedIndexPath;


@end

@implementation HealthIssues
@synthesize HealthIssuesTV;
@synthesize checkedIndexPath;

- (void)viewDidLoad {
    [super viewDidLoad];


    PickerList=[[NSArray alloc]initWithObjects:@"None" ,@"Diabetes", @"Heart Problem" , @"Thyroid" , @"Over Weight" , @"Kidney Issues" , @"Lever Issues" , @"Vitamins Deficiency" , @"Blood Pressure" ,  nil];

}

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

#pragma mark - Table view data source

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
    return 1;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    return [PickerList count];
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

    static NSString *cellIdentifier = @"cell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier];
    if (cell==Nil) {
        cell=[[UITableViewCell alloc]initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:cellIdentifier];

    }


    if (indexPath.row == 0){
        if ([self.checkedIndexPath isEqual:indexPath])
        {
        cell.accessoryType = UITableViewCellAccessoryCheckmark;
        }
        else
        {
        cell.accessoryType = UITableViewCellAccessoryNone;
        }
    }


    cell.textLabel.text = [PickerList objectAtIndex:indexPath.row];
    cell.tintColor=[UIColor blueColor];
    return cell;
}

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    UITableViewCell *selectedCell = [tableView cellForRowAtIndexPath:indexPath];
    {
        int z=0;
            if (indexPath.row==0)
                {
                        NSArray *visibleCells = [tableView visibleCells];
                            for (UITableViewCell *cell in visibleCells)
                            {
                                if (z==0)
                                {
                                     [cell setAccessoryType:UITableViewCellAccessoryCheckmark];
                                    z++;
                                }
                                else
                                {
                                   [cell setAccessoryType:UITableViewCellAccessoryNone];
                                    z++;
                                }
                            }
                }
            else
                {
                                if ([selectedCell accessoryType] == UITableViewCellAccessoryNone)
                                {
                                    [selectedCell setAccessoryType:UITableViewCellAccessoryCheckmark];
                                }
                                else
                                {
                                [selectedCell setAccessoryType:UITableViewCellAccessoryNone];
                                }
                         [tableView reloadData];
                }

    }
}

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

}



  @end

根据我的要求,这件作品非常适合我。现在我想在词典中存储选定的行。

6 个答案:

答案 0 :(得分:2)

@interface selectUsers ()
{
    NSMutableArray *selected_ids;

}

- (void)viewDidLoad {
    [super viewDidLoad];
    selected_ids = [[NSMutableArray alloc]init];
}

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

    UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];

    NSString *_id = [[yourarray objectAtIndex:indexPath.row]valueForKey:@"_id"];

    if (cell.accessoryType == UITableViewCellAccessoryCheckmark) {
        [selected_ids removeObject:_id];
        cell.accessoryType = UITableViewCellAccessoryNone;

    } else {
        [selected_ids addObject:_id];
        cell.accessoryType=UITableViewCellAccessoryCheckmark;
    }
}

在所需的位置使用selected_ids数组。

答案 1 :(得分:1)

尝试从数组的数据源获取值并获取UITableView的所有选定行: 以下代码将为您提供所选行的所有索引路径:

NSArray *arrIndexpaths = [YourTableView indexPathsForSelectedRows]; // Returns indexpaths for multiple selection in Table view.

然后通过indexpath.row和indexpath.section从数组中获取值,无论你在数据源方法中使用了什么。

答案 2 :(得分:0)

首先,你应该这样做:

tableView.allowsMultipleSelection = YES;

然后您可以通过以下方式获取所选行的列表:

NSArray *selectedIndexPaths = [self.tableView indexPathsForSelectedRows];

由于您现在拥有所选行的列表,因此可以获取行的行或数据。

答案 3 :(得分:0)

您可以使用数组。

  $.ajax({
      url: 'https://api.spotify.com/v1/users/wanderlustfest/playlists/5ehqaKNCIjtIuwNOALskcK/followers',
      headers: {
         'Authorization': 'Bearer ' + <your_access_token>
      },
      method: 'PUT',
      success: function() {
          // do something
      },
      dataType: 'html',
      error: function(e) {
          console.error(e);
      }
  });

- (void)viewDidLoad { arrData=[[NSMutableArray alloc]init]; } 上将您的值添加到数组中。

didSelectRowAtIndexPath

可能会帮助你。

答案 4 :(得分:0)

试试这个..

$(document).ready(function(){ $("#up").on('click',function(){ $("#incdec input").val(parseInt($("#incdec input").val())+1); }); $("#down").on('click',function(){ $("#incdec input").val(parseInt($("#incdec input").val())-1); }); }); //实例变量,在viewDidLoad中进行初始化

我假设您使用NSMutableArray *selectedIndexes ;来选择单元格(我的意思不是自定义按钮操作)

didSelectRowAtIndexPath

现在,您可以使用-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath: (NSIndexPath *)indexPath { if ([selectedIndexes containsObject:indexPath]) { [selectedIndexes removeObject:indexPath]; } else { [selectedIndexes addObject:indexPath]; } } 数组

中的索引值获取所有选定的单元格

表示前selectedIndexes

编辑:

在选择过程结束后从selectedIndexes中删除所有对象

答案 5 :(得分:0)

@interface RestTableViewController ()<UISearchBarDelegate>{
NSMutableSet *setTemp;
//    NSMutableArray *setTemp;
}

在ViewDidLoad

- (void)viewDidLoad {
[super viewDidLoad];

setTemp = [[NSMutableSet alloc] initWithCapacity:1];
 . . . 
}

在cellForRowAtIndexPath

cell.selectionStyle = UITableViewCellSelectionStyleNone;
[self markCell:cell atIndex:indexPath.row];

创建方法

- (void)markCell:(UITableViewCell *)cell atIndex:(NSInteger)index{
if ([setTemp containsObject:[NSNumber numberWithInteger:index]]) {
    cell.accessoryType = UITableViewCellAccessoryCheckmark;
}
else {
    cell.accessoryType = UITableViewCellAccessoryNone;

}
}

在didSelectRowAtIndexPath

[tableView deselectRowAtIndexPath:indexPath animated:YES];
UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];

{
    // Restaurent is my Object File
    Restaurent *obj = [restMutableArray objectAtIndex:indexPath.row];
    if ([setTemp containsObject:[NSNumber numberWithInteger:indexPath.row]]) {
        [setTemp removeObject:[NSNumber numberWithInteger:indexPath.row]];
         // tempMainArray is an array which manages the title of selected or deselected Rows . . . 
        [tempMainArray removeObject:obj.strTitle];
         NSLog(@"Selected Row Data %@",tempMainArray);
    }
    else {

        [setTemp addObject:[NSNumber numberWithInteger:indexPath.row]];
        [tempMainArray addObject:obj.strTitle];
        NSLog(@"Selected Row Data %@",tempMainArray);
    }
        [self markCell:cell atIndex:indexPath.row];
}

选择所有单元格

#pragma mark : Select All Data Method. . .
- (IBAction)actionBtnClicked:(id)sender {
{
    [setTemp removeAllObjects];
    for (int i = 0 ; i < [restMutableArray count]; i++) {
      Restaurent *obj = [restMutableArray objectAtIndex:i];
        [tempMainArray addObject:obj.strTitle];
        [setTemp addObject:@(i)];
    }
     NSLog(@"%@",tempMainArray);
    [self.tableView reloadData];
}