Xib&Storyboard
2015-10-15 21:51
323 查看
Xcode右边编辑辅助栏介绍
上半部分从左到右:1、文件说明
2、快速帮助
3、类的关联
4、属性设置
5、布局设置
6、事件链接
下半部分从左到右:
1、文件库
2、代码库
3、控件库
4、媒体库
Xib用法
使用xib自定义UITableViewCell, xib如图:需要绑定类型,如图:
点击label,调整以适配,如图:
//根据xib文件的名字,然后转换为UINib对象
UINib *nib = [UINib nibWithNibName:@"BookCell" bundle:nil]; [_tableView registerNib:nib forCellReuseIdentifier:@"cellId"];
当xib中有多个button时,可以创建修改类型创建数组,而不必一个一个拉取。代码如下:
@property (retain, nonatomic) IBOutletCollection(UIButton) NSArray *buttonArray;
Storyboard用法
UITabBarItem的选中状态图片不显示解决办法
首先右边栏添加如图:
然后关联文件,在代码中修改选中图片
1.原型cell
上图是自定制的cell,只有在UITableViewControler中才可以自定义cell,由UITableView进行布局
无需在UITableViewController代码中进行注册cell类型和复用标示,添加标示如图:
运行效果如下图,进行了复用:
2.静态cell
静态cell也是交由UITableViewController进行管理,只有由UITableViewController管理才可以进行定制
静态cell不进行复用,常用于定制固定的cell,运行如下图:
静态cell应该注意的问题
1 .
点击tableview设置静态cell,如下图
2 . UITableViewController中不要复习返回个section个数和cell个数的代理方法,否则程序会优先调用代码返回个数,从而不会显示静态cell。
3、关联跳转
Push、模态跳转
根据pushSegueId push跳转,id如下图:
- (IBAction)pushSegue:(id)sender { [self performSegueWithIdentifier:@"pushSegueId" sender:nil]; }
根据modalSegueId模态跳转,id如下图:
- (IBAction)modalSegue:(id)sender { [self performSegueWithIdentifier:@"modalSegueId" sender:nil]; }
//此方法是无连线根据页面id标示直接跳转,id标示如下图:
- (IBAction)noSeguePush:(id)sender { UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil]; UIViewController *blueVC = [storyboard instantiateViewControllerWithIdentifier:@"BlueId"]; [self.navigationController pushViewController:blueVC animated:YES]; }
pragma mark - Navigation
//执行任何segue都会调用该方法,可以使用此方法进行控制页面之间的传值- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { if ([segue.identifier isEqualToString:@"modalSegueId"]) { GreenViewController *gvc = segue.destinationViewController; //inputString成员变量 gvc.inputString = @"hahaha,传递成功了^_^"; } }
自定义的segue
此方法需继承UIStoryboardSegue具体实现代码如下:
#import "CustomSegue.h" @implementation CustomSegue //实现自定义的segue必须重写这个方法 - (void)perform { UIViewController *src = self.sourceViewController; UIViewController *dst = self.destinationViewController; CGRect originalFrame = src.view.frame; CGRect changeFrame = originalFrame; changeFrame.origin.y += originalFrame.size.height; [UIView animateWithDuration:0.5 animations:^{ src.view.frame = changeFrame; } completion:^(BOOL finished) { src.view.alpha = 0; dst.view.alpha = 0; dst.view.frame = changeFrame; [src.view.superview addSubview:dst.view]; [UIView animateWithDuration:0.5 animations:^{ dst.view.alpha = 1.0; dst.view.frame = originalFrame; } completion:^(BOOL finished) { src.view.alpha = 1.0; [dst.view removeFromSuperview]; [src presentViewController:dst animated:NO completion:nil]; }]; }]; } @end
相关文章推荐
- IM服务器的架构
- linux 交换分区 swap
- MacOS配置Erlang开发环境
- 软件问题解决方法
- 20151015----知识整理
- python,用django新建站点
- POJ 1276 Cash Machine(DP多重背包)
- Java 序列化和反序列化
- iOS开发总结之代码规范(上)
- 管理与分配内存
- Android从assets和raw中读取txt文件
- ajax异步实现表单的无刷新验证
- 手动grub引导redhat
- avl树的c实现
- grub的三种安装方式
- 课上重点整理
- Linux文件系统以及目录结构简介
- c++primer——模板,标准库特殊设施
- android学习2:Intent与Bundle
- Lesson01-Homework UIView作业