您的位置:首页 > 产品设计 > UI/UE

纯代码编写UITableView和UICollectionView中的坑

2015-10-21 11:52 507 查看
当你用纯代码编写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;
}
好吧,没有仔细看文档,掉坑里了~
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: