How to make multiple rows selection in UITableView

2019-07-13 13:47发布

I want to make multiple rows selection in uitableview(uipopover view) which is subview of UISplitview. The selected rows info should be displayed in Lable in detail pane of splitview.

I have managed to get multiple rows selection but not getting to display the selected rows info in detail pane.

Any help/snippet code would be appreciated.

Thanks,

2条回答
啃猪蹄的小仙女
2楼-- · 2019-07-13 14:18

since you don't give us some sample code we cannot provide you exact snippets. There are plenty ways to fill a tableView so how should we know how you did that?

Nonetheless I will tell you how it should work abstractly. You will need either an array with the current selection or - as @ Ricard Pérez del Campo suggested - you add a property to your data-model which contains the state (e.g. selected).

Step 2 you will check this property (or array) every time you
a) change the selection OR
b) the tableView is displayed on screen (viewWillAppear and popup appear)

Therefore you need a dataSource which is available from all places (in your case the Popover, the splitView and a detailView)

You said one tableView already work so the problem for the second is probably the selection dataSource.
There is also a method in UITableView called indexPathsForSelectedRows which will give you an array for the current selection. You could apply that selection to the other tableView but it's a hackish way and you should definitely change your data-model instead.

查看更多
Summer. ? 凉城
3楼-- · 2019-07-13 14:23

In the table view controller add this code:

- (void)viewDidLoad
{
    [super viewDidLoad];
    self.tableView.allowsMultipleSelection = YES;
}

In the table view delegate add this:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    NSArray *selectedRows = [tableView indexPathsForSelectedRows];

    NSMutableArray *mySelectedObjects = [NSMutableArray array];

    for (NSIndexPath *indexPath in selectedRows) {
        MyObject *object = [datasource objectAtIndex:indexPath.row];
        [mySelectedObjects addObject:object];
    }

    [self showSelectedObjectsInDetailPane];
}
查看更多
登录 后发表回答