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