1

我有这个视图堆栈:

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

这是我在 UITableViewController 中的 segue 代码:

- (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。我已经这样做了。

任何想法将不胜感激!

4

1 回答 1

0

我尝试了在其他地方看到的建议,你应该回到简单的案例。我将情节提要中的 UINavigationController 更改为指向一个基本的 UIViewController,然后让它有一个连接到另一个 UIViewController 的按钮。当我运行它时,我仍然得到我的 UITableViewController!

那时我记得我正在以编程方式填充 UITabBarController 中的对象,并且我没有调用 UINavigationController,而是跳过它并调用 UITableViewController!所以事实上,我真的和其他人有同样的问题,错过了 UINavigationController !

更改我的程序以链接 UINavigationController 而不是 UITableViewController,现在一切都按预期工作。

于 2012-01-11T23:05:34.650 回答