Heim > Fragen und Antworten > Hauptteil
如图:我在collection.xib中创建了2个cell,定义了不同的identifier,
使用的时候:
NSArray *nibArrays = [[UINib nibWithNibName:@"LongCell" bundle:nil] instantiateWithOwner:nil options:nil];
[collectionView registerClass:[[nibArrays objectAtIndex:0] class] forCellWithReuseIdentifier:@"LongCellFirst"];
[collectionView registerClass:[[nibArrays objectAtIndex:1] class] forCellWithReuseIdentifier:@"LongCellSecond"];
#pragma mark - UICollectionViewDelegate DataSource -
- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath {
if (indexPath.item % 2 == 0) {
LongCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"LongCellFirst" forIndexPath:indexPath];
return cell;
}else {
LongCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"LongCellSecond" forIndexPath:indexPath];
return cell;
}
}
这样能运行,但是取出的cell都是上面什么也没有。
是我注册cell不对吗??还是因为不能这样用?tableViewCell.xib就可以这样搞啊?
tableView.xib中创建多个cell
请大神解释啊。。。。。。
ringa_lee2017-04-18 09:31:28
xib文件读取错了
NSArray *nibArrays=[[NSBundle mainBundle]loadNibNamed:@"LongCell" owner:nil options:nil];
ringa_lee2017-04-18 09:31:28
两种方法:
拆成两个 xib
,每次 registerNib:
一个;
合成一个,但是自己初始化实例:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
if (indexPath.row % 2) {
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"LongCellFirst"];
if (!cell) {
cell = [[UINib nibWithNibName:@"LongCell" bundle:nil] instantiateWithOwner:self
options:nil].firstObject;
}
return cell;
}
else {
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"LongCellSecond"];
if (!cell) {
cell = [[UINib nibWithNibName:@"LongCell" bundle:nil] instantiateWithOwner:self
options:nil].lastObject;
}
return cell;
}
}
黄舟2017-04-18 09:31:28
在cell中关联cell上的控件时,如果你不做修改。你所有关联的控件都默认为cell1上的控件。通俗的讲也就是连线时默认的都是第一个cell上的控件