Отменить разворот для 2 контроллеров просмотра

У меня есть одна кнопка (кнопка возврата) на контроллере представления. Простой до сих пор. У меня есть 2 контроллера вида с таблицей на каждом из них. если пользователь выбирает строку из любой таблицы, она переходит к контроллеру представления с включенной кнопкой "Назад". Кнопка назад должна вернуться к исходному контроллеру представления, который был включен пользователем, когда они выбрали строку.

Я рассматривал возможность развязки для этого, что хорошо, но я не могу добавить два перехода к одной кнопке. Один для возврата в одно представление таблицы и возврат для другого представления таблицы в зависимости от того, какой вид таблицы они использовали для доступа к контроллеру представления.

Любые идеи?

Ответ 1

Как объяснил Волк,

-(IBAction)devDismiss
    {
    NSLog(@" ------- dev dismiss .....");

    // for a custom segue unwind, you must do this...
    [self performSegueWithIdentifier:@"specialWord" sender:self];

    // "specialWord" is the identifier set on storyboard for the
    // custom unwind segue

    /* for a "default" unwind segue, do this...
    [self dismissViewControllerAnimated:YES completion:nil];
    Note, if you used a push segue, you should use
      [self.navigationController popViewControllerAnimated:YES]
    If you used a modal segue, you should use
      [self dismissViewControllerAnimated:YES completion:nil] "
    */
    }

Обратите внимание, что в самом деле вы также должны использовать "specialWord" в вашем segueForUnwindingToViewController: переопределить, который будет находиться в контроллере представления DESTINATION (то есть ORIGINAL), который находится под ним.

-(UIStoryboardSegue *)segueForUnwindingToViewController:
                          (UIViewController *)toViewController 
              fromViewController:(UIViewController *)fromViewController 
              identifier:(NSString *)identifier
    {
    NSLog(@"we're in _your class name_, segueForUnwindingToViewController %@",
      identifier);

    // for some unwinds, we have a custom unwind we want to use.
    // so, check the identifier:
    if ([identifier isEqualToString:@"specialWord"])
        {
        YourCustomUnwindSegue *sg = [[YourCustomUnwindSegue alloc] 
                           initWithIdentifier:identifier 
                           source:fromViewController 
                           destination:toViewController];
        return sg;
        }

    // don't forget the break-away "return" inside any macthes.

    // NSLog(@"note, if this message appears, it likely you have a typo
    //  somewhere for 'specialWord' - unless you genuinely have a situation
    //  where it will also fall through to the 'default' unwind segue :O ");

    // BE SURE TO return the default unwind segue otherwise
    return [super segueForUnwindingToViewController:toViewController 
                                 fromViewController:fromViewController
                                         identifier:identifier];
    }