您的位置:首页 > 其它

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: