iOS tableView多选

时间:2015-06-24 07:05:31

标签: ios uitableview nsuserdefaults didselectrowatindexpath

选择多行的许多方法和方法都已弃用或不起作用。

我只想在didSelectRowAtIndexPath中选择多行并将其保存到数组或NSUserDefault中。这个案例我选择NSUserDefault,但我愿意将其更改为Array。

这是我的代码:

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

    NotificationsTableViewCell *cell = (NotificationsTableViewCell*)[tableView cellForRowAtIndexPath:indexPath];

    //set clicked icon after row selected
    cell.imgIcon.image=[UIImage imageNamed:@"select-icon"];

    //notification id for selected row
    Notifications* selected = notifications[indexPath.section];
    selectedGroup = selected.NotificationsId;

     //save it in nsuserdefaults
    [[NSUserDefaults standardUserDefaults] setObject:selectedGroup forKey:@"notificationSelectedID"];

}

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

//deselect the row

}

注意:我使用的是最新的Xcode SDK 8。

感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

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

NotificationsTableViewCell *cell = (NotificationsTableViewCell*)[tableView cellForRowAtIndexPath:indexPath];

 // do your logic with following condition

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

    } 
    else 
    {

        cell.accessoryType = UITableViewCellAccessoryNone;

    }

}

答案 1 :(得分:0)

您可以声明可变数组,并在每次用户选择特定行时,为数组中的特定行添加所需的详细信息,然后使用NSUserDefaults存储更新的数组。

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

[arrRows addObject:[NSString stringWithFormat:@"%@", indexPath]];
[[NSUserDefaults standardUserDefaults] setValue:arrRows forKey:@"arrRows"];

}