【问题标题】:Segue from screen with several buttons?用几个按钮从屏幕上切换?
【发布时间】:2015-05-22 00:15:41
【问题描述】:

我正在尝试使用 UINavigationViewController 编写应用程序。我的第一个屏幕上有几个按钮,单击每个按钮时,我想转到 UIViewController。我知道我可以在每个按钮上添加一个 segue,所有这些都指向我想要转到的 UIViewController,但我想知道是否可以只使用一个可以从每个按钮触发的 segue。

如果那不可能,我想知道是否可以在单击按钮时从第一个 UIViewController 打开第二个 UIViewController,并提供像 UINavigationView 提供的后退按钮。除了后退按钮之外,我确实设法让这个想法的所有内容都发挥作用。我的意思是我可以在屏幕上的某处放置一个标准按钮然后返回,但我想要 UINavigationView 上的标准返回按钮。

呸!我不确定这是否有意义。

我知道我也可以使用 tableview,但我正在尝试使用按钮进行设置。

谢谢

编辑:感谢所有回答的人。我现在有这个工作。我会投票赞成答案,但我没有足够的帖子来做。感谢您的回答!

【问题讨论】:

    标签: ios swift uinavigationcontroller


    【解决方案1】:

    如果您需要为每个按钮设置单独的操作功能,建议您从主控制器 segue 到另一个控制器并创建一个 segue 标识符(参见下面的 xcode 过程);然后,从每个按钮操作函数中使用 performSegueWithIdentifier。您还可以利用 prepareForSegue。要创建转场,请从情节提要中控制器的左侧按钮按住 Control 并拖动到要转场并选择显示的控制器。

    快速检查我在 SO 参考中针对非常相似的问题所做的示例代码

    Linking View Controllers through button

    您可以将主控制器嵌入到导航控制器中,这样您就可以返回导航。如果你有多个图层,你也可以使用 unwind segue。

    【讨论】:

      【解决方案2】:

      将每个按钮链接到该 ViewController 中的单个操作(例如 buttonClick),然后使用 self.navigationController 上的 pushViewController 方法执行适当的 segue

      -(IBAction)buttonClick:(id)sender {
      if(sender.id == self.button1) {
          DestinationViewController *vc = [[UIStoryboard storyboardWithName:@"Main" bundle:[NSBundle mainBundle]] instantiateViewControllerWithIdentifier:@"VC_IDENTIFIER"];
          [self.navigationController pushViewController:vc animated:YES];
      }
      

      或者,如果您已经在情节提要中定义了 1 个转场,则可以使用

      [self performSegueWithIdentifier:@"SegueIdentifier" sender:self];
      

      然后在 buttonClick 方法中使用它。使用第一个示例,或者第二个示例,只要您在情节提要中设置的 segue 是推送,那么您应该已经获得后退按钮,因为这是将视图控制器推送到导航堆栈的默认行为。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-04-15
        • 1970-01-01
        • 2021-10-28
        • 2011-05-11
        • 2011-05-04
        • 1970-01-01
        • 1970-01-01
        • 2017-03-27
        相关资源
        最近更新 更多