• [BS-30] 你真的会用storyboard开发吗?


    你真的会用storyboard开发吗?

     
    随着苹果大屏手机的推出,苹果公司马上推出了屏幕适配的一些东西Constraints and Size Classes同时,在开发项目时候,是使用sb还是写代码,苹果公司给出了回复:使用SB开发,使用SB开发不仅省去了很多重复的代码,而且可视性非常强!但是你真的知道怎么去使用SB吗?

    在一般的布局中,我们先使用一个plist文件,做为tabbarVC的的4个选项 pilist文件如下 在此输入图片描述 

    然后创建多个Storyboard,以及Storyboard关联的文件, 然后删除启动的一些sb界面,让界面启动时候从AppDelegate中启动, 在AppDelegate中写下如下代码

    <!-- lang: cpp -->
    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds]; self.window.backgroundColor = [UIColor whiteColor]; //b不要在主方法中写碎代码 [self setUI]; [self.window makeKeyAndVisible]; return YES;

    }

    -(void)setUI{

    UITabBarController *uiTabBar = [[UITabBarController alloc] init];
    
    NSURL *url = [[NSBundle mainBundle] URLForResource:@"MainUI" withExtension:@"plist"];
    NSArray *arr = [NSArray arrayWithContentsOfURL:url];
    
    for (NSDictionary *dic in arr) {
    
        UIStoryboard *sb = [UIStoryboard storyboardWithName:dic[@"vcName"] bundle:nil];
        UIViewController *uiVC = sb.instantiateInitialViewController;
        uiVC.title = dic[@"title"];
        uiVC.tabBarItem.image = [UIImage imageNamed:dic[@"icon"]];
        uiVC.tabBarItem.badgeValue = dic[@"badgeNumber"];
    
        [uiTabBar addChildViewController:uiVC];
    }
    
    self.window.rootViewController = uiTabBar;
    

    }

    然后就能看到如下功能了,

    效果如下:

     在此输入图片描述

    那在SB文件中的按钮点击跳转到其他SB文件中怎么处理呢?如下代码:

    • (IBAction)clickBtn:(id)sender {
    • UIStoryboard *sb = [UIStoryboard storyboardWithName:@"hhh" bundle:nil];
    • UIViewController *vc = sb.instantiateInitialViewController;
    • [self.navigationController pushViewController:vc animated:YES];
    • }

    注意: 通过 [XXViewController   alloc] init]; 的方法只能加载同名xib,不会加载同名的storyboard。 即使同时增加3个文件:WZTableViewController.h,WZTableViewController.m,WZTableViewController.storyboard,然后在代码中写上如下2句:

    WZTableViewController *tableVC = [[WZTableViewController alloc]init];  //只会创建一个空的白色的tableView

    [self.navigationController   pushViewController: tableVC  animated:YES];

    也不会自动加载同名的storyboard。 加载storyboard必须采用如下代码:

    • UIStoryboard *sb = [UIStoryboard storyboardWithName:@"WZTableViewController" bundle:nil];
    • UIViewController  *settingVC = [sb  instantiateInitialViewController];

    转自:http://my.oschina.net/panyong/blog/372385

  • 相关阅读:
    《RESTful Web Services》第一章 使用统一接口
    selenium测试(Java)--元素操作(五)
    selenium测试(Java)--浏览器控制(四)
    Struts2 基础典型应用
    Fitnesse 访问日志配置
    selenium定位方法(java实例)(二)
    selenium测试环境搭建(一)
    java web 学习-网络资源
    eclipse + tomcat 开发环境配置
    HTTP客户端代码片段
  • 原文地址:https://www.cnblogs.com/stevenwuzheng/p/5595676.html
Copyright © 2020-2023  润新知