1

我无法理解 xcode 5 中的情节提要。我正在通过手册寻找答案,但没有任何效果,即使是简单的情节提要场景。几乎所有的手册都在 xcode 4.x 上,但我在第五个工作。据我了解,xcode 4 和 5 中的场景实现存在一些差异。我根本无法理解情节提要的原理,因此不明白为什么没有任何效果。请帮助我了解 xib 和故事板之间的区别。什么最适合工作以及在什么条件下工作?我拥有的所有书籍都是关于 IOS 6 的,它们都带有 xib 示例,我什至无法在第五个 xcode 中运行。在 developer.apple.com 上找不到足够的文档,大家都很困惑。Аs 据我所知,关于 xcode 5 + IOS 7 的书籍将在几个月后发布。请帮我制定这个方案,表格视图中的单元格是静态的。链接到方案https://www.dropbox.com/s/mwwfqgsj2d98exe/Scheme.jpg

4

1 回答 1

2

以下是 Xcode 5 中故事板的说明,以及如何在下图中概述的方案中标识的不同场景之间建立连接的详细信息:

从大局开始:

  1. 要在一个场景或另一个场景之间进行转场,您可以从一个视图控制器按住 ctrl-drag到目标视图控制器(您不再需要按住 ctrl-click 从控件到另一个视图)
  2. 在源场景(文档大纲视图)中单击创建的 segue
  3. 在身份检查器中为 segue 标识符创建一个唯一名称
  4. 任何控件现在都可以调用以下视图控制器方法来执行 segue - (void)performSegueWithIdentifier:(NSString *)identifier sender:(id)sender
  5. 可以通过在源视图控制器上实现以下方法在视图控制器之间传递数据:- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender

所以具体到你的方案:

在情节提要内:在文档大纲内(编辑器 > 显示文档大纲):

展开两个场景

  1. 在 ViewController1 到 ViewController2 之间按住 Ctrl 并拖动
  2. 在源场景中,单击创建的 segue 并在身份检查器中设置标识符
  3. 在源视图控制器中,创建上述 prepareForSegue 以访问和传递视图控制器之间的任何数据对象(确保您在目标视图控制器上有一个属性,您使用 segueIdentifier 来控制要发送的数据)
  4. 在两个按钮的操作方法中,使用 View2 和 View5 的不同 id 调用各自的 segue [self performSegueWithIdentifier:@"MYSEGUE_ID" sender:btnObjectNilEtAl];
  5. 要将 segues 渲染到其他视图控制器,只需在源视图控制器和目标视图控制器(View2 到 View4/View5)之间重复 ctrl-drag 过程。
  6. 要从 tableview 单元格中使用 segue,只需添加 [self performSegueWithIdentifier:@"MYSEGUE_ID" sender:btnObjectNilEtAl]; 代码到 didSelectRowAtIndexPath 方法中。

以下是一些帮助您入门的代码示例:

// In a story board-based application, you will often want to do a little preparation before navigation
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{

    if ([[segue identifier] isEqualToString:@"showDealDetail"])
    {
        // Get reference to the destination view controller
        DealDetailViewController *dvc = [segue destinationViewController];

        // Pass any objects to the view controller here, like...
        [dvc setDetailObject:(NSManagedObject*)sender];
    } else if ([[segue identifier] isEqualToString:@"showActivityDetail"])
    {
        ActivityDetailViewController * advc = [segue destinationViewController];

        // Pass any objects to the view controller here, like...
        [advc setDetailObject:(NSManagedObject*)sender];
    } else if ( [[segue identifier] isEqualToString:@"showMatchDetail"])
    {
        MatchDetailViewController * mdvc = [segue destinationViewController];

        // Pass any objects to the view controller here, like...
        [mdvc setDetailObject:(NSManagedObject*)sender];
    }
}

从 ViewController1 内的两个按钮操作方法调用:

 //execute manual segue
        [self performSegueWithIdentifier:@"showAlternate" sender: self];

方案

于 2013-10-08T23:01:23.343 回答