【问题标题】:prepareForSegue doesn't init new viewprepareForSegue 不会初始化新视图
【发布时间】:2012-05-13 20:28:25
【问题描述】:

我一直在查看几个教程,如果他们将任何信息传递给下一个视图,它们都只用一行代码或更多代码调用新视图。目前我想用这样的 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];
}

【问题讨论】:

  • 你不使用 UINavigationController 吗?
  • 我选择了表格视图并嵌入了导航控制器。从菜单转到其他视图时还有其他方法吗?
  • 你为什么使用segues而不是pushViewController?我只是好奇:)
  • 我第二次开始学习为 iphone 编写 iOS 应用程序,并在 lynda 的教程中看到了不同的方法。所以这次我想用故事板创建我的项目来学习这个功能。

标签: iphone ios segue


【解决方案1】:
-(void)turnNext {
    UIStoryboard *storyboard = self.storyboard;
    MenuTableViewController *mtvc = [storyboard instantiateViewControllerWithIdentifier:@"Menu"];

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

改成

[self.navigationController pushViewController:mtvc animated:YES];

【讨论】:

  • 这会改变我之后步骤的问题吗?因为切换到表格视图只适用于我的代码...我可以始终以编程方式切换视图,但我总是读到,在项目中使用情节提要时,您不应该经常使用这种方式
【解决方案2】:

你应该为此使用segues。

  • 在情节提要中的源控制器上创建 2 个自定义转场。
  • 将它们的标识符设置为“segueToMainViewController”和“segueToSettingsViewController”

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

//use your logic here

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-09
    • 2010-10-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多