Вернитесь назад, используя Unwind segue

Я использую раскадровку с навигационным контроллером, имеющим три viewControllers, корневой контроллер и два других оставшихся, помеченных как 1 2 и 3 соответственно. как показано на изображении введите здесь описание изображения

Теперь проблема в том, что я хочу вернуться к rootViewController и второму viewController из третьего, используя один unWind Segue. Я имею в виду, что если я нажал 3-й контроллер от root, то раскрутил меня обратно на корневой контроллер, а если я нажал со 2-го, то это позволило мне вернуться ко 2-му viewController. Я хочу использовать только одну кнопку для возврата. любая помощь будет оценена. Спасибо


person Nisar Ahmad    schedule 10.07.2015    source источник


Ответы (1)


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

Теперь, согласно изображению, вы хотите раскрутиться на 2-й контроллер с 3-го контроллера. Итак, в вашем третьем контроллере прикрепите к кнопке следующий метод действия. Кроме того, перейдите к раскадровке и дайте каждому из ваших контроллеров представления идентификатор раскадровки. Предположим, идентификатор раскадровки вашего второго контроллера просмотра — «secondViewController».

-(IBAction)unwindToThisViewController:(UIStoryboardSegue *)unwindSegue
    {

    UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
    SecondViewController *secondVC = [storyboard instantiateViewControllerWithIdentifier:@"secondViewController"];
    int index = [self getMyDesiredViewControllerIndex:secondVC];
    [self.navigationController popToViewController:[[self.navigationController viewControllers]objectAtIndex:index] animated:YES];
    }

Ваш метод getMyDesiredViewControllerIndex должен выглядеть так:

-(int)getMyDesiredViewControllerIndex:(UIViewController*)desiredVC{

    int i=0;
    for(UIViewController *vc in [self.navigationController viewControllers]){
        if([vc isKindOfClass:[desiredVC class]]){
            return i;
        }
        i++;
    }
    return 0;
}

Таким образом, вы можете перейти к любому контроллеру представления, который вы хотите. Просто укажите желаемый контроллер представления и получите его индекс из getMyDesiredViewControllerIndex и перетащите его в этот контроллер.

Надеюсь это поможет!

person Natasha    schedule 10.07.2015