UINavigationController с двумя копиями одного и того же контроллера представления в стеке - PullRequest
1 голос
/ 22 февраля 2012

Я использую UINavigationController, чтобы поместить UIViewController в стек, затем, когда пользователь выбирает строку в табличном представлении, я выделяю новую версию контроллера представления и помещаю ее в стек, это работает нормально, но затем, когда я начинаюПри нажатии кнопки «Назад» NSMutableArray, который я использую для хранения информации, похоже, сохраняет значение из контроллера представления, который был только что извлечен из стека.

Вот метод, который помещает новое в стек:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    [tableView deselectRowAtIndexPath:indexPath animated:YES];

    if (indexPath.section == 1) {
        if (hasLoadedResponses && [responses count] == 0) {
            return;
        }

        VideoDetailViewController_iPhone *nextView = [[VideoDetailViewController_iPhone alloc] initWithNibName:@"VideoDetailViewController_iPhone" bundle:nil withVideoArray:[responses objectAtIndex:indexPath.row]];
        nextView.navController = navController;
        [navController pushViewController:nextView animated:YES];
        [nextView release];
    }

}

Я уверен, что есть что-то глупое, что мне не хватает, но сейчас я не могу его найти.

1 Ответ

0 голосов
/ 23 февраля 2012

Предполагая, что изменяемый массив - это [response objectAtIndex: indexPath.row], потому что это единственное значение, которое вы передаете новому контроллеру push-представления, тогда, если вы изменяете его, вы должны принять во внимание, что это тот же объект, и поэтомумодификации доступны.

Вы можете написать:

. withVideoArray:[NSMutableArray arrayWithArray:[responses objectAtIndex:indexPath.row]];

Как я уже сказал, я предполагаю, что объект является изменяемым массивом вашей проблемы.

Другое более разумное решение - определениесвойство, которое вы используете для хранения изменяемого массива как «copy» вместо «retain».

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