当采用可视化编程的时候,一般采用代码+xib(xib经编译后成为nib,两者叫法一样)
在创建的时候如果打了那个创建xib的钩,一切都变的简单了。如果没有打钩,自己创建,因为没有联系,怎么才能联系起来呢?
1.给视图添加File’s Owner,也就是你创建的控制器
2.让File’s Owner 的视图和你创建的视图联系起来。
3.给代码注册cell,这个是使用到了cell,如果直接用的视图,直接使用就行了,就省略这一步了。
#pragma mark ----------------必须注册cell
//注册cell
//省略了手动创建cellForRow方法中手动创建cell的那个步骤
UINib *nib =[UINib nibWithNibName:@"ListTableViewCell" bundle:nil];
[self.tableView registerNib:nib forCellReuseIdentifier:@"listCell"];
其实在你创建的那个类里面
就是在loadView,和didloadView还有一段代码
//就是检查有没有当前类名有没有RegisterViewController.xib或nib,如果没有就去加载这个文件
-(instancetype)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil{
return self;
}
下面就是使用cell和直接使用视图的方法。
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
ListTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"listCell"];
//应为上面注册了cell,所以下面可以省略
/*
if (!cell) {
cell = [[ListTableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"listCell"];
}
*/
return cell;
}
直接使用
这里的RegisterViewController就是使用xib创建的视图。
- (IBAction)clickRigest:(UIButton *)sender {
NSLog(@"你点击了注册按钮");
RegisterViewController *registerVC = [[RegisterViewController alloc]initWithNibName:@"Register" bundle:NULL];
[self.navigationController pushViewController:registerVC animated:YES];
[registerVC release];
}