zoukankan      html  css  js  c++  java
  • 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.

  • 相关阅读:
    solr8.4.1开发测试环境的简单应用
    spring aop + xmemcached 配置service层缓存策略
    git配置httpd服务-web_dav模式
    notepad++快捷键
    Eclipse默认快捷键说明
    maven&nexus_repository 私库搭建与使用
    CENTOS下搭建git代码仓库 ssh协议
    送给iOS求职者的一份硬核面试指南,你可以不优秀,但是你必须重视!
    2020年中高级iOS大厂面试宝典+答案
    iOS开发者经验总结:在腾讯的九年,我的成长之路和职业思考
  • 原文地址:https://www.cnblogs.com/davidgu/p/3872630.html
Copyright © 2011-2022 走看看