当你用纯代码编写UITableView或者UICollectionView时,这里只说UITableView,UICollectionView类似,调用方法->
dequeueReusableCellWithIdentifier:forIndexPath:时发现崩溃了,查看控制台输出的信息如下:
根据提示要求你添加nib文件或者注册一个类,官方文档也做了详细的说明:
文档给了重要提示...好吧,所以你应该添加下面这一句:
示例代码如下:
#import "MainViewController.h"
#import "MainTableViewCell.h"
// 获取屏幕高度
#define kDeviceHeight [UIScreen mainScreen].bounds.size.height
// 获取屏幕宽度
#define kDeviceWidth [UIScreen mainScreen].bounds.size.width
@interface MainViewController ()
@property (nonatomic,strong) UITableView *mainTableV;
@end
@implementation MainViewController
- (void)viewDidLoad {
[super viewDidLoad];
_mainTableV = [[UITableView alloc] initWithFrame:CGRectMake(0, [[UIApplication sharedApplication] statusBarFrame].size.height, kDeviceWidth, kDeviceHeight) ];
_mainTableV.delegate = self;
_mainTableV.dataSource = self;
[_mainTableV registerClass:[MainTableViewCell class] forCellReuseIdentifier:@"Cell"];
_mainTableV.scrollEnabled = YES;
_mainTableV.userInteractionEnabled = YES;
[self.view addSubview:_mainTableV];
}
#pragma mark - UITableViewDelegate methods
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
return 1;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return 50;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
MainTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Cell" forIndexPath:indexPath];
if (cell == nil) {
cell = [[MainTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"Cell"];
}
[cell setTheImage:nil andTitle:@"123"];
return cell;
}
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
return 50;
}
好吧,没有仔细看文档,掉坑里了~