0

我一直在看几个教程,如果他们将任何信息传递给下一个视图,他们都只用一行代码或更多代码来调用新视图。目前我想用这样的segue构建一个菜单:

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {          
    NSIndexPath *path = [self.tableView indexPathForSelectedRow]; 
    if ([path row]==0) {
        MainViewController *mtvc = (MainViewController *)[segue destinationViewController];
    } else {
        SettingsViewController *svc = [segue destinationViewController];
    }       
}

通常所有示例都使用“segue.identifier isEqualToString:@”“”。但是我无法将情节提要内的表格视图的单元格与多个其他视图连接起来。因此,我使用选定的行来确定我的哪些观点应该继续。

我不知道这是否会出现问题,但我以这种方式从我的splashview初始化了tableview:

-(void)turnNext {
    UIStoryboard *storyboard = self.storyboard;
    MenuTableViewController *mtvc = [storyboard instantiateViewControllerWithIdentifier:@"Menu"];
    [self presentViewController: mtvc animated:YES completion:nil];
}
4

2 回答 2

1
-(void)turnNext {
    UIStoryboard *storyboard = self.storyboard;
    MenuTableViewController *mtvc = [storyboard instantiateViewControllerWithIdentifier:@"Menu"];

    [self presentViewController: mtvc animated:YES completion:nil];
}
             ^^^^^^

change that to

[self.navigationController pushViewController:mtvc animated:YES];
于 2012-05-13T20:55:57.537 回答
1

为此,您应该使用 segues。

  • 在 storyboard 的 Source 控制器上创建 2 个自定义 segue。
  • 将它们的标识符设置为“segueToMainViewController”和“segueToSettingsViewController”

现在,在 tableView - 'didselectrowAtIndexPath' 方法使用以下。

//use your logic here

if(indexPath.row == 1) {
   [self performSegueWithIdentifier:@"segueToMainViewController" sender:nil];
}
else {
   [self performSegueWithIdentifier:@"segueToSettingsViewController" sender:nil]
}

如果您需要向控制器发送任何内容,您可以将数据作为发送方传递。

于 2016-12-20T09:57:16.857 回答