美文网首页
CS193p 斯坦福IOS开发 2011 (六)

CS193p 斯坦福IOS开发 2011 (六)

作者: ItchyHiker | 来源:发表于2019-01-23 12:20 被阅读0次

    前向引用

    @class
    

    多个MVC

    一个MVC只能控制一个屏幕,或者更小的区域,随着程序变得越来越复杂,我们会需要多个MVC,那么如何在多个MVC之间进行切换呢?
    答案是使用:Controller of Controller : UINavigationController

    UINavigationController

    1. 什么是UINavigationController
    • UINavigationController也是继承于UIViewController,不过它是用来控制控制器的控制器。
    • UINavigationController有一个Outlet只向一另外一个MVC,就是它的rootViewController。
    • rootViewController就是出现在白色区域的, 原来的rootViewController放到UINavigationController后,它 的bounds高度会变小一些。
    • UINavigationController通过执行一个segues,可以跳转到另外一个MVC上。就是把新的MVC push都屏幕上,点返回,把当前的MVC pop出来。


      image.png
    1. 如何创建一个UINavigationController


      Screen Shot 2019-01-23 at 11.59.36 AM.png

    Segues

    1. segues的三种方式:
    • push
    • modal:Puts the view controller up in a way that blocks the app until it is dismissed
    • custom: You can create your own subclasses of
      UIStoryboardSegue

    IPAD ONLY:

    • replace:Replaces the right-hand side of a UISplitViewController
    • Popover - Puts the view controller on the screen in a popover
    1. 如何创建Segues:
      ctrl + 拖拽

    2. 一般是通过用户切换来进行跳转但是有时候也可以通过 segueID在代码里面进行条件跳转

    - (void)performSegueWithIdentifier:(NSString *)segueId sender:(id)sender;
    

    例子:

    - (IBAction)rentEquipment
    {
    if (self.snowTraversingTalent == Skiing) {
    [self performSegueWithIdentifier:@“AskAboutSkis” sender:self];
    } else {
    [self performSegueWithIdentifier:@“AskAboutSnowboard” sender:self];
      }
    }
    
    1. 跳转之前准备方法
    - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
    {
    if ([segue.identifier isEqualToString:@“DoAParticularThing”]) {
        UIViewController *newController = segue.destinationViewController;
      }
      // send messages to newController to prepare it to appear on screen
      // the segue will do the work of putting the new controller on screen
    }
    
    1. 通过名字从故事版实例化ViewController, 而不是从segue创建
    - (IBAction)doit
    {
    DoitViewController *doit =
    [self.storyboard instantiateViewControllerWithIdentifier:@”doit1”];
    doit.infoDoitNeeds = self.info;
    [self.navigationController pushViewController:doit animated:YES];
    }
    

    相关文章

      网友评论

          本文标题:CS193p 斯坦福IOS开发 2011 (六)

          本文链接:https://www.haomeiwen.com/subject/mcjxfqtx.html