• scenes & segues within storyboards


    Scenes

    Scenes in a storyboard represent content shown within one screen in your application. A scene involves a view controller and the views that make up its interface.

    There’s also no limit as to how many scenes you can have within one storyboard.

    If you have many scenes that are
    part of a distinctly different part of your application, you could also separate them out
    into another storyboard file.

    Separate storyboards can be loaded programmatically.

    eg, if you had a storyboard file named OtherStoryboard.storyboard, you
    could load it by using the following command:

    UIStoryboard *newStoryboard = [UIStoryboard storyboardWithName:@"OtherStoryboard" bundle:nil];

    Segues

    Segues allow you to easily transition from scene to scene. Segues are represented by
    the UIStoryboardSegue class.

    There are a few built-in segues that you can choose from. When working with an
    iPhone application you can choose from push, modal, or custom. For the iPad you’re
    given an extra choice of using a popover segue.

    Modal segues slide a scene from the bottom to the top and appear to be on top
    of the parent scene. You used a modal segue when showing your scene to create a
    new task.

    Push segues are used to transition the new scene in from the right. In
    a push segue the original scene that prompted the segue then goes away by sliding
    out to the left. You used this type of segue when tapping on a task from the tasks list
    to show the task view.
    Popover segues overlay only part of the parent view within a popover.
    You can create custom segues by creating your own UIStoryboardSegue class. This
    gives you full control over the transition and appearance of the new scene.


    You create segues in your storyboard by using your mouse to drag a connection
    from one scene or an actionable object to another.

    // trigger it when a row in your table view was selected
    -(void) tableView:(UITableView *)tableView
    didSelectRowAtIndexPath:(NSIndexPath *)indexPath
    {
        [self performSegueWithIdentifier:@"taskSegue"
          sender:self.tasks[indexPath.row]];
    }
        

    Passing data between view controllers with segues

    Segues also allow you to pass data to the next view controller before completing the
    transition. You do this by overriding the prepareForSegue:sender: method from
    the originating view controller:

    - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
    {
        UIViewController *destination = segue.destinationViewController;
        // Check to see if you’re preparing for the correct segue
        if ([segue.identifier isEqualToString:@"taskSegue"])
            // Setting the sender as the task property
            [destination setValue:sender forKeyPath:@"task"];
        else
            // Get destination controller if not taskSegue
            destination = [segue.destinationViewController topViewController];
    
    // Set your current view controller as the delegate property [destination setValue:self forKeyPath:@"delegate"]; }

    Problems with using storyboarding

    1) multiple team members development

    The biggest problem with storyboarding is that it’s extremely difficult to use when
    working with a team that uses source code revision and management tools like Git,
    Subversion, or Mercurial.

    When multiple teammates make changes to the same storyboard,
    it becomes problematic. Source code revision tools won’t be able to properly merge
    the changes, and Xcode won’t be able to open the storyboard file until the changes
    have been merged successfully. You’ll be forced to do a deep dive into the XML to fix
    it yourself.

    2) Another problem is that it forces older developers, who have been comfortable
    using NIBs and creating and managing views programmatically, to change their
    ways.

  • 相关阅读:
    SDN第二次作业
    事后诸葛亮
    SDN第一次上机作业
    个人作业——软件产品案例分析
    SDN第一次作业
    Alpha冲刺总结报告
    Alpha冲刺Day10
    Alpha冲刺Day9
    Alpha冲刺Day8
    Alpha冲刺Day7
  • 原文地址:https://www.cnblogs.com/davidgu/p/3872630.html
Copyright © 2020-2023  润新知