如何让两个自定义UICollectionViewCell类共享相同的变量名称

时间:2016-10-14 09:53:17

标签: ios objective-c swift oop uicollectionview

我有两个自定义UICollectionViewCell类,但是,我想在同一范围内创建一个具有相同名称的变量,因为cellForItemAtIndexPath方法中的所有属性和所有代码都是相同的定制单元格。

我想做这样的事情: 例如:

- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath{


CustomCell1/CustomCell2 *cell;

if (condition) {
    cell = (CustomCell1 *)[collectionView dequeueReusableCellWithReuseIdentifier:kCustomCell1Identifier forIndexPath:indexPath];
} else {
    cell = (CustomCell2 *)[collectionView dequeueReusableCellWithReuseIdentifier:kCustomCell2Identifier forIndexPath:indexPath];
}

    // Remaining code is same for both custom cells
    cell.property1 = value1;
    cell.property2 = value2;
    .
    .
    .
    .
    .
    //lot of code
    cell.property100 = value100;

return cell;
} 

我背后的目的是我不想重复剩下的所有代码。我知道创建公共自定义单元类并在该公共类中编写此条件可能是解决方案,但是在该类初始化之前如何将条件变量传递给自定义类。因为我认为我们无法初始化(alloc init)UICollectionViewCell。

这是否可以使用条件(三元)运算符?

1 个答案:

答案 0 :(得分:4)

您可以创建基(父)collectionviewCell类

Worksheets("Source").Range("Z4:Z2000").SpecialCells(xlCellTypeFormulas, 23).Copy
Worksheets("Destination").Range("missing_qbc").pastespecial(xlPasteValues)

现在您可以创建从BaseCollectionViewCell派生的新集合视图单元格:

@interface BaseCollectionViewCell : UICollectionViewCell 
//Add the common methods(can add common IBOulet and IBAction) and implement them.
@end

您可以将另一个集合视图单元格创建为:

@interface ChildCell : BaseCollectionViewCell
//add methods which are specific to the ChildCell as the methods of    
//BaseCollectionViewCell is already available via inheritance.
@end

现在,ChildCell和ChildCell2获取BaseCollectionViewCell的所有方法。

将您的集合视图单元格注册到这些类以及单独的重用标识符。 使用以下代码将单元格出列。

@interface ChildCell2 : BaseCollectionViewCell
//add methods which are specific to the ChildCell2 as the methods of    
//BaseCollectionViewCell is already available via inheritance.
@end