gpt4 book ai didi

cocoa-touch - 单个 UiTableView 中的多个 UiTableViewCell 子类?为什么这段代码不起作用

转载 作者:行者123 更新时间:2023-12-01 01:38:10 24 4
gpt4 key购买 nike

好的,这是我的问题。我有一张表,有点像苹果的 addressBook.app,它使用不同的单元格子类以不同的方式显示信息。在这个特定的应用程序中,我有 3 个不同的 UiTableViewCell 子类,它们都有自己的 Nib 。

我无法正确获取代码:-(如果我尝试在 CellForRowPath 方法中访问我的单元格的实例变量,它会说'(成员'类型'的错误请求不是结构或联合')现在我假设“某事”这个词是我问题的根源。我要粘贴的代码显然没有正确设置我的单元格。这是代码:

根据被调用的部分,有 3 个 if 语句可以获取正确的单元格子类:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

static NSString *PoolFacilityCellIdentifier = @"PoolFacilityCellIdentifier";
static NSString *PoolFacilityAddressCellIdentifier = @"PoolFacilityAddressCellIdentifier";
static NSString *PoolFacilityPoolCellIdentifier = @"PoolFacilityPoolCellIdentifier";
NSUInteger section = indexPath.section;

//Creat a generic container for cell which will be cast during one of the next two statements
id cell;

//Change the identifier depending on cell type. MIGHT NEED TO ADD SOMETHING ELSE FOR POOLS AND PRICES
if (section == KAddressIndex) {
cell = (PoolFacilityAddressCell *)[tableView dequeueReusableCellWithIdentifier:PoolFacilityAddressCellIdentifier];

if (cell == nil) {

//Load the appropriate nib for the type of cell being asked for.

NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"PoolFacilityAddressCell" owner:self options:nil];

for (id object in nib) {

if ([object isMemberOfClass:[PoolFacilityAddressCell class]])
cell = (PoolFacilityAddressCell *) object;

}
}

}
else if (section == KPoolIndex) {
cell = (PoolFacilityPoolCell *)[tableView dequeueReusableCellWithIdentifier:PoolFacilityPoolCellIdentifier];

if (cell == nil) {

//Load the appropriate nib for the type of cell being asked for.

NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"PoolFacilityPoolCell" owner:self options:nil];

for (id object in nib) {

if ([object isMemberOfClass:[PoolFacilityPoolCell class]])
cell = (PoolFacilityPoolCell *) object;


}
}
}
else {
cell = (PoolFacilityCell *)[tableView dequeueReusableCellWithIdentifier:PoolFacilityCellIdentifier];

if (cell == nil) {

//Load the appropriate nib for the type of cell being asked for.

NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"PoolFacilityCell" owner:self options:nil];

for (id object in nib) {

if ([object isMemberOfClass:[PoolFacilityCell class]])
cell = (PoolFacilityCell *) object;
}
}

}

任何帮助将不胜感激!!!我导入了我的单元子类的所有头文件。

抛出我的错误的代码是这样的(特别是 cell.type.text = thePool.type) cell.type 是一个 Iboutlet UiLabel:
if (section == KPoolIndex) {

NSMutableArray *thePools = [allSections objectForKey:sectionAsNumber];

if ([thePools count] > 0) {
[cell setPromptMode:NO];
//Set the label and Pool from the Pool Object
Pool *thePool = [thePools objectAtIndex:row];
cell.type.text = thePool.type;


}

}

谢谢,

最佳答案

马特·加拉格尔 (Matt Gallagher) 有一篇文章介绍了一种更简洁的方法来完成这种类型的表格。
他将单元特定的代码分解为它们自己的类。管理起来方便很多。

cocoawithlove.com - Heterogeneous cells in a UITableViewController

在您的代码中,这一行看起来很麻烦

cell.type.text = thePool.type;

thePool 是一个“Pool”对象,它有一个名为“type”的属性吗?
检查@property 和@synthesize 是否为“Pool”对象中的“type”设置正确。

关于cocoa-touch - 单个 UiTableView 中的多个 UiTableViewCell 子类?为什么这段代码不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/492559/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com