Выбранные значения не сохраняются в AddObject в didSelectRow - PullRequest
0 голосов
/ 17 ноября 2018

Выбранные объекты не сохраняются в addObject в didSelectRowAtIndex, и мне нужно передать этот массив в другой контроллер представления.

@implementation nextViewController
{
    NSArray *tableData;
    NSArray * arrayfortable;
    NSMutableArray * selectedIndexpath;
}

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{ 
    UITableViewCell* cell = [tableView cellForRowAtIndexPath:indexPath];

    NSMutableArray *selectedIndexpath = [[NSMutableArray alloc]init];
    selectedIndexpath = [selectedIndexpath arrayByAddingObject:[tableData objectAtIndex:indexPath.row]];

    NSLog(@"selected",selectedIndexpath);

    if (cell.accessoryType == UITableViewCellAccessoryNone) {
        cell.accessoryType = UITableViewCellAccessoryCheckmark;
        __selectedPath = indexPath;
    } else {
        cell.accessoryType = UITableViewCellAccessoryNone;
        __selectedPath = nil;
    }
}

1 Ответ

0 голосов
/ 17 ноября 2018

Эта строка:

NSMutableArray *selectedIndexpath = [[NSMutableArray alloc]init];

создает новую локальную переменную с именем selectedIndexpath, которая скрывает переменную экземпляра selectedIndexpath.

Вам нужно удалить эту строку. Но вам нужно инициализировать переменную экземпляра.

Я бы добавил следующую строку в viewDidLoad:

selectedIndexpath = [[NSMutableArray alloc] init];

Еще одно необходимое изменение - заменить строку:

selectedIndexpath = [selectedIndexpath arrayByAddingObject:[tableData objectAtIndex:indexPath.row]];

с:

[selectedIndexpath addObject:@(tableData objectAtIndex:indexPath.row)];

Обратите внимание, что вам нужно обернуть строку пути индекса как NSNumber.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...