iOS UI基础-12.0 Storyboard

storyboard创建控制器

1.先加载storyboard文件(Test是storyboard的文件名)

UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Test" bundle:nil];

2.接着初始化storyboard中的控制器

初始化“初始控制器”(箭头所指的控制器)

MJViewController *mj = [storyboard instantiateInitialViewController];

通过一个标识初始化对应的控制器

MJViewController *mj = [storyboard instantiateViewControllerWithIdentifier:@”mj"];

完整方式:

    UIStoryboard *story=[UIStoryboard storyboardWithName:@"NJWisdomCard" bundle:nil];
    NJWisdomCardDetailViewController  *wisdom=[story instantiateViewControllerWithIdentifier:@"NJWisdomCardDetailViewController"];
    wisdom.bindaliascode=cardId;
    wisdom.hidesBottomBarWhenPushed=YES;
    [self.navigationController pushViewController:wisdom animated:YES];

Segue

什么是Segue

Storyboard上每一根用来界面跳转的线,都是一个UIStoryboardSegue对象(简称Segue)

Segue的属性

每一个Segue对象,都有3个属性

1.唯一标识

@property (nonatomic, readonly) NSString *identifier;

2.来源控制器

@property (nonatomic, readonly) id sourceViewController;

3.目标控制器

@property (nonatomic, readonly) id destinationViewController;

  

Segue的类型

根据Segue的执行(跳转)时刻,Segue可以分为2大类型

  • 自动型:点击某个控件后(比如按钮),自动执行Segue,自动完成界面跳转
  • 手动型:需要通过写代码手动执行Segue,才能完成界面跳转

自动型

按住Control键,直接从控件拖线到目标控制器

  

点击“登录”按钮后,就会自动跳转到右边的控制器

手动型

1.按住Control键,从来源控制器拖线到目标控制器

  

2.手动型的Segue需要设置一个标识(选中箭头设置)

3.在恰当的时刻,使用perform方法执行对应的Segue

[self performSegueWithIdentifier:@"login2contacts" sender:nil];

使用建议

  • 点击某个控件后,不需要做任何判断,一定要跳转到下一个界面,建议使用“自动型Segue”
  • 点击某个控件后,需要做一些判断,也就是说:满足一定条件后才跳转到下一个界面,建议使用“手动型Segue”

使用例子

点击登陆,判断后跳转(手动型)

/**
 *  登录
 */
- (IBAction)login {
    if (![self.accountField.text isEqualToString:@"mj"]) {
        // 帐号不存在
        [MBProgressHUD showError:@"帐号不存在"];
        return;
    }

    if (![self.pwdField.text isEqualToString:@"123"]) {
        // 密码错误
        [MBProgressHUD showError:@"密码错误"];
        return;
    }

    // 显示一个蒙版(遮盖)
    [MBProgressHUD showMessage:@"哥正在帮你登录中...."];

    // 发送网络请求

    // 模拟(1秒后执行跳转)
    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
        // 移除遮盖
        [MBProgressHUD hideHUD];

        // 跳转 -- 执行login2contacts这个segue
        [self performSegueWithIdentifier:@"login2contacts" sender:nil];
    });
}

/**
 *  执行segue后,跳转之前会调用这个方法
 *  一般在这里给下一个控制器传递数据
 */
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    // 1.取得目标控制器(联系人列表控制器)
    UIViewController *contactVc = segue.destinationViewController;

    // 2.设置标题
    contactVc.title = [NSString stringWithFormat:@"%@的联系人列表", self.accountField.text];
}
@end

多个控制器跳转(自动)

/**
 *  执行跳转之前会调用
 *  在这个方法中,目标控制器的view还没有被创建
 */
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    id vc = segue.destinationViewController;

    if ([vc isKindOfClass:[MJAddViewController class]]) { // 如果是跳转到添加联系人的控制器
        // 设置下一个控制器(添加联系人的控制器)的代理
        MJAddViewController *addVc = vc;
        addVc.delegate = self;
    } else if ([vc isKindOfClass:[MJEditViewController class]]) { // 如果是跳转到查看(编辑)联系人的控制器
        MJEditViewController *editVc = vc;
        // 取得选中的那行
        NSIndexPath *path = [self.tableView indexPathForSelectedRow];
        editVc.contact = self.contacts[path.row];
        editVc.delegate = self;
    }
}
时间: 2024-10-10 09:49:27

iOS UI基础-12.0 Storyboard的相关文章

iOS UI基础-5.0 QQ框架(Storyboard)

1.拉入TabBarController和4个Navigation 2.TabBarController关联Navigation 3.设置消息,拉入一个Button,设置背影 4.联系人,拉入一个Segmented Control.可以修改title,如果想增加一个组,则将Segments增加1. 5.修改table为系统自带的,并设置箭头 6.Push过去时,返回的按钮设置,在的主页面设置. 7.Push过去的页面隐藏底部导航栏 8.最终效果

iOS UI基础-17.0 UILable之NSMutableAttributedString

在iOS开发中,常常会有一段文字显示不同的颜色和字体,或者给某几个文字加删除线或下划线的需求.之前在网上找了一些资料,有的是重绘UILabel的textLayer,有的是用html5实现的,都比较麻烦,而且很多UILabel的属性也不起作用了,效果都不理想.后来了解到NSMuttableAttstring(带属性的字符串),上面的一些需求都可以很简便的实现. NSMuttableAttstring 方法 为某一范围内文字设置多个属性 - (void)setAttributes:(NSDictio

iOS UI基础-16.0 UIButton

回归自然,UIButton是我们使用最频烦的一个控件.下面,对该控件的一些常用方法进行一些总结. UIButton *payStateBtn = [UIButton buttonWithType:UIButtonTypeCustom]; payStateBtn.frame = CGRectMake(12, 10, ScreenWidth - 50, 22); // 设置字体居中方向 payStateBtn.contentHorizontalAlignment = UIControlContent

iOS UI基础-9.0 UITableView基础

在iOS中,要实现表格数据展示,最常用的做法就是使用UITableView.UITableView继承自UIScrollView,因此支持垂直滚动,而且性能极佳. UITableView有两种样式: 一列显示:UITableViewStylePlain 分组显示:UITableViewStyleGrouped tableView展示数据的过程 1.调用数据源的下面方法得知一共有多少组数据 - (NSInteger)numberOfSectionsInTableView:(UITableView

iOS UI基础-7.0 UIScrollView

概述 移动设备的屏幕大小是极其有限的,因此直接展示在用户眼前的内容也相当有限.当展示的内容较多,超出一个屏幕时,用户可通过滚动手势来查看屏幕以外的内容,普通的UIView不具备滚动功能,不能显示过多的内容.UIScrollView是一个能够滚动的视图控件,可以用来展示大量的内容,并且可以通过滚动查看所有的内容 UIScrollView的常见属性 UIScrollView的常用代理方法 UIScrollView的缩放 UIScrollView使用 基本使用 UIScrollView的用法很简单,将

iOS UI基础-1.0加法计算器

1.打开Xcode,新建一个项目 2.Single View Application是最适合初学者的模板 3.填写该应用相关信息 4.搭建UI界面 项目创建完毕后,自动帮我们做了很多配置,也自动生成了很多文件 还自动添加了开发所依赖的框架 项目中这么多文件,哪些是影响着UI界面的呢?在iOS5之前,苹果使用xib文件来描述UI界面,在iOS5之后,苹果采取了更加强大和先进的storyboard文件来描述界面(Xcode5是基于iOS7的)因此,可以得出结论:修改项目中的Main.storyboa

iOS UI基础-13.0 数据存储

应用沙盒 每个iOS应用都有自己的应用沙盒(应用沙盒就是文件系统目录),与其他文件系统隔离.应用必须待在自己的沙盒里,其他应用不能访问该沙盒 应用沙盒的文件系统目录,如下图所示(假设应用的名称叫Layer) 模拟器应用沙盒的根路径在: (apple是用户名, 6.0是模拟器版本) /Users/apple/Library/Application Support/iPhone Simulator/6.0/Applications 应用沙盒结构分析 应用程序包:(上图中的Layer)包含了所有的资源

iOS UI基础-6.0 UIActionSheet的使用

UIActionSheet是在iOS弹出的选择按钮项,可以添加多项,并为每项添加点击事件. 使用 1.需要实现UIActionSheetDelegate  协议 @interface NJWisdomCardDetailViewController ()<UIActionSheetDelegate> @end 2.弹出选择按钮框 - (void)showSheet{ UIActionSheet *actionSheet = [[UIActionSheet alloc] initWithTitl

iOS UI基础-3.0图片浏览器及plist使用

需求: 1.显示当前图片序号/总图片数 2.显示图片 3.上一张图片.下一张图片转换 4.显示图片描述 下面用代码来实现 // // UYViewController.m // 3.0图片查看器 // // Created by jiangys on 15/8/19. // Copyright (c) 2015年 uxiaoyuan. All rights reserved. // #import "UYViewController.h" @interface UYViewContro