【问题标题】:how to create a uiview with segues, which is used by multiple UIViewControllers in storyboard如何使用 segues 创建一个 uiview,故事板中的多个 UIViewControllers 使用它
【发布时间】:2012-08-12 09:57:53
【问题描述】:

基本上我想做的是将 UIView 包含到情节提要上的多个 UIViewControllers 中。我可以包含 uiview,但 UIView 中的 segues 不起作用。 我有一个这样的故事板:

我有一个带有 2 个 UIViewControllers FirstSecond 的选项卡控制器。我有一个单独的 UITableViewController 和另外两个 UIViewControllers AB,通过 segues 连接。

我可以将表格视图作为子视图添加到FirstSecond 视图中,但是当我点击单元格时,它不会转到下一个屏幕AB。我有点想明白为什么它不起作用,但就是想不出最好的方法来完成这个。

有什么好的方法吗?我是故事板的新手,但开发 iOS 应用已经有一段时间了。

编辑:

我将 tableViewController 添加到每个 View 的方式如下:

self.tableViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"theTableViewController"];
[self.view addSubview:_tableViewController.tableView];

当点击表格视图中的单元格时,会调用 prepareForSegue:segue:sender,但不会推送到导航控制器,因为表格视图控制器作为子视图位于每个视图控制器中

EDIT2:

我发布了我的测试项目here

【问题讨论】:

  • 如何将“屏幕 A”和“屏幕 B”连接到 tableView?直接到tableView单元格?
  • @Rick 是的,它们已连接到自定义单元格。
  • 既然您使用的是故事板,为什么不在第一和第二个视图控制器中创建单独的 tableViews 并转到“Screen A”和“Screen B”?您不需要任何一行代码。
  • 我为这个问题简化了它,但实际上不仅有 A 或 B 或 First 或 Second .. 有许多视图控制器需要表格视图,并且至少有 5 个自定义单元格和连接到 segue 每个的视图控制器。这就是为什么我想用所有必要的自定义单元格制作一个表格视图控制器,并使用 segue 连接到视图控制器。
  • 看看这个post是否有帮助

标签: ios ios5 storyboard


【解决方案1】:

您可以尝试两种方法。

1.直接在tableview单元和下一个视图控制器之间创建一个segue。我要强调的是,除非尝试下面的方法,否则不要在 tableview 或视图与下一个视图控制器之间创建 segue。

2.将此代码添加到您的 tableview 控制器:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    if ([indexPath row]) {
        [self performSegueWithIdentifier:@"segueToB" sender:self];
    }else {
         [self performSegueWithIdentifier:@"segueToA" sender:self];
    }
}  

【讨论】:

  • 感谢您的帮助,但我已经通过 segue 直接连接了单元和下一个视图控制器。 performSegueWithIdentifier 也不起作用,因为表视图作为子视图添加到每个 uiview 中。推送导航的东西不起作用。这就是我在这里遇到的问题
  • 好像只能在tableView:didSelectRowAtIndexPath:中调用pushViewController:animated:。我试试看。
  • 嗯,我明白了。我会对此做更多的研究并决定做什么。我发布了我的测试项目。谢谢!
【解决方案2】:

我终于想出了如何在子视图中进行转场。其实很简单。看来我需要将视图控制器作为“childViewControllers”添加到主视图控制器

而不是

self.tableViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"theTableViewController"];

我是这样做的:

[self addChildViewController:[self.storyboard instantiateViewControllerWithIdentifier:@"theTableViewController"];
[self.view addSubview:_tableViewController.tableView];

childViewController 中的 segues 可以按我的预期工作。谢谢大家的帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-01-04
    • 2020-08-05
    • 1970-01-01
    • 1970-01-01
    • 2012-01-08
    • 1970-01-01
    • 2012-06-01
    • 2012-04-16
    相关资源
    最近更新 更多