Xib可视化编程
1.简单的说,xib就是拖控件编程,也可以说是可视化编程(所见即所得),使用xib编程相对于纯代码可以省下大量的敲代码的时间从而提高了程序的开发速度,Xcode4之后才可以在工程中直接使用xib编程,使用xib编程只是减轻了MVC中V设计的工作量,学好xib有助于了解MVC设计思想
2.IB(interface bulider),以后称之为xib由于xib文件,人能直接识别,所有xib文件会在编译后生成.nib文件(二进制文件)
3.xib文件中,在Xcode的右侧边框中比普通的文件多出四个选项卡 一共六个
第一个选项卡:对当前文件的描述
第二个选项卡:辅助选项卡,主要用来查询
第三个选项卡:自定义选项卡,可以用来配置和当前xib文件相关联的实体类,如果创建实体类时候,默认勾上also create xib file,此时默认和实体类自动关联
第四个选项卡:控件属性选项卡,(优先显示自己的属性,在下面显示它父类的属性)
第五个选项卡:配置控件的frame
第六个选项卡:主要用来查看控件相关联的属性或者是方法或者是代理或者是它所遵循的一些协议
file‘s owner 指的是当前xib文件中View所属于的视图控制器,此时View就代表这个视图控制器的根视图
第二个选项卡:辅助选项卡,主要用来查询
第三个选项卡:自定义选项卡,可以用来配置和当前xib文件相关联的实体类,如果创建实体类时候,默认勾上also create xib file,此时默认和实体类自动关联
第四个选项卡:控件属性选项卡,(优先显示自己的属性,在下面显示它父类的属性)
第五个选项卡:配置控件的frame
第六个选项卡:主要用来查看控件相关联的属性或者是方法或者是代理或者是它所遵循的一些协议
file‘s owner 指的是当前xib文件中View所属于的视图控制器,此时View就代表这个视图控制器的根视图
IBOutlet给实体类关联属性
IBAction给实体类关联方法
这个方法是视图控制器的制定初始化方法
如果不给nib文件名字,系统默认去查找跟当前实体类同名的nib名赋值到这里
第二个参数是当前应用程序的文件名
[NSBundle mainBundle]不写的话自动去找
一个方法可以关联多个按钮,一个按钮可以关联多个方法
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
if (self
= [super
initWithNibName:nibNameOrNil
bundle:nibBundleOrNil]) {
}
return self;
}
return self;
}
4.
- (void)viewDidLoad {
[super
viewDidLoad];
//从xib文件中加载cell
//从xib文件中加载cell
[self.tableView
registerNib:[UINib
nibWithNibName:@"ContactCell"
bundle:[NSBundle
mainBundle]]
forCellReuseIdentifier:kContactCell];
}
- (UITableViewCell
*)tableView:(UITableView
*)tableView cellForRowAtIndexPath:(NSIndexPath
*)indexPath {
// 第一种cell重用的方法
/*
static NSString *identifer = @"k-cell";
ContactCell *cell = [tableView dequeueReusableCellWithIdentifier:identifer];
if (cell == nil) {
cell = [[[NSBundle mainBundle]loadNibNamed:@"ContactCell" owner:nil options:nil]lastObject];
}
*/
// 第二种cell从用的方法
ContactCell *cell = [tableView dequeueReusableCellWithIdentifier:kContactCell forIndexPath:indexPath];
// 第一种cell重用的方法
/*
static NSString *identifer = @"k-cell";
ContactCell *cell = [tableView dequeueReusableCellWithIdentifier:identifer];
if (cell == nil) {
cell = [[[NSBundle mainBundle]loadNibNamed:@"ContactCell" owner:nil options:nil]lastObject];
}
*/
// 第二种cell从用的方法
ContactCell *cell = [tableView dequeueReusableCellWithIdentifier:kContactCell forIndexPath:indexPath];
cell.nameLabel.text
=
@"夏琳";
return cell;
}
}
storyboard可视化编程
1.
如果一个视图控制器有多个按钮点击之后都要跳转到同一个界面,此时使用视图在视图控制器之间建立的segue连线,不过要给这个segue加一个标示
如果只有一个按钮点击后,跳转到下一个页面,此时使用按钮和视图控制器之间的连线
实现button控件中的方法
2. - (IBAction)handlePush:(UIButton
*)sender {
/*
// self.storyboard获取当前视图控制器所在的storyboard(故事板),也就是mian.storyboard
// instantiateViewControllerWithIdentifier通过视图控制器的唯一标示获取视图控制器对象
DeatilViewController *deatilVC = [self.storyboard instantiateViewControllerWithIdentifier:@"aa"];
[self.navigationController pushViewController:deatilVC animated:YES];
*/
/*
// self.storyboard获取当前视图控制器所在的storyboard(故事板),也就是mian.storyboard
// instantiateViewControllerWithIdentifier通过视图控制器的唯一标示获取视图控制器对象
DeatilViewController *deatilVC = [self.storyboard instantiateViewControllerWithIdentifier:@"aa"];
[self.navigationController pushViewController:deatilVC animated:YES];
*/
通过选择视图控制器之间的连线
segue,完成页面之间的跳转
[self
performSegueWithIdentifier:@"jj"
sender:nil];
}
- (void)prepareForSegue:(UIStoryboardSegue
*)segue sender:(id)sender {
// 获取segue起始端的视图控制器对象
// 获取segue起始端的视图控制器对象
RootViewController *rootVC = [segue
sourceViewController];
//
获取push过去后的视图控制器对象
DeatilViewController *detailVC = [segue destinationViewController];
// 把textField中的内容取出来复制给下一个界面的属性
DeatilViewController *detailVC = [segue destinationViewController];
// 把textField中的内容取出来复制给下一个界面的属性
detailVC.string
= rootVC.textField.text;
}