Передача «текущей выбранной строки» в новый контроллер представления (вроде работает - отстает от 1) - PullRequest
0 голосов
/ 20 марта 2012

Я пытаюсь передать выбранную строку в UITableView другому контроллеру представления, который также является UITabelView.Это работает (вроде), но мои переменные играют друг с другом (кажется, по какой-то причине 1).

Пример:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    chosenProject = [[self activeProjectsList] objectAtIndex:[indexPath row]];

    self.selectedProject = chosenProject;
    [self setSelectedProject:self.selectedProject]; 
    NSLog(@"PROJECT: %@",chosenProject); // Returns correctly.

}

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {

if ([segue.identifier isEqualToString:@"ShowShots"]) {

    NSLog(@"CURRENT: %@",chosenProject); // Returns NULL?

    ShotListViewController *slVC = [segue destinationViewController];
    slVC.outputName = self.selectedProject;

    }
}

Это странно, потому что в первый развернет NULL, затем при повторной попытке возвращает последнюю выбранную строку, которая должна была быть представлена ​​в первый раз .. не NULL.

Я предполагаю, что переменная не устанавливается до отправки prepareForSegue, чтоВот почему, кажется, он всегда отстает, когда получает.

Я ошибаюсь, просто чтобы передать одну переменную?

1 Ответ

1 голос
/ 20 марта 2012

Вы правы в своем предположении.tableView:didSelectRowAtIndexPath называется после , когда выбирается строка и после вызова перехода.

Вам нужно вместо этого поместить код в tableView:willSelectRowAtIndexPath, чтобы он вызывался до завершения перехода.

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