segue из UITableViewController не работает как push, только как модальный - PullRequest
1 голос
/ 11 января 2012

У меня есть этот стек просмотра:

UIViewController --> (Modal segue) --> 
UITabBarController --> (relationship) --> 
UINavigationController --> (relationship) --> 
UITableViewController --> (segue) --> UIViewController

Вот мой код segue в UITableViewController:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    NSLog(@"selected row...");
    [self performSegueWithIdentifier:@"showVmail" sender:self];
    NSLog(@"done segue");
}

- (void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    if ([[segue identifier] isEqualToString:@"showVmail"]) {
        NSLog(@"Got segue request...");
        NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow];

        [segue.destinationViewController setMyVmail: [self.vmails objectAtIndex:indexPath.row]];

    }
}

Когда я нажимаю на элемент в контроллере табличного представления, я вижу следующие сообщения журнала:

selected row...
Got segue request...
Setting myVmail... // from the new view controller
done segue

И он не перемещается на мой новый контроллер вида. Если я перехожу на модал, думаю, это работает, но, конечно, нет кнопки «Назад». Насколько я вижу, я все сделал правильно. Я прочитал много ответов о переполнении стека, с той же проблемой, и их решение - поместить в UINavigationController. Я уже сделал это.

Любые мысли приветствуются!

1 Ответ

0 голосов
/ 12 января 2012

Я попробовал предложение, которое вы видели в другом месте, где вы должны вернуться к простым случаям. Я изменил UINavigationController в раскадровке, чтобы он указывал на базовый UIViewController, а затем для этого имел кнопку, которая переходила в другой UIViewController. Когда я запустил его, я все еще получил свой UITableViewController!

Именно тогда я вспомнил, что я запрограммировал заполнение объектов в UITabBarController и что я не вызывал UINavigationController, а пропустил это и вызвал UITableViewController! Так что на самом деле у меня действительно была та же проблема, что и у всех остальных, я пропустил UINavigationController!

Измените мою программу так, чтобы она связывала UINavigationController вместо UITableViewController, и теперь все работает должным образом.

...