在“UITableViewCell”类型的对象上找不到属性
Posted
技术标签:
【中文标题】在“UITableViewCell”类型的对象上找不到属性【英文标题】:Property not found on object of type 'UITableViewCell' 【发布时间】:2014-05-26 14:06:09 【问题描述】:我有 2 个自定义 UITableViewCell
,并且都有属性。
尽管NSLog(@"%@", cell.class)
表明两者都被正确创建,但我无法在tableView:cellForRowAtIndexPath:
上设置我的属性。
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
UITableViewCell *cell;
if (indexPath.row != [self.realties count])
cell = [tableView dequeueReusableCellWithIdentifier:RealtyCellIdentifier];
NSLog(@"%@", cell.class);
cell.realtyNameLabel.text = [[self.realties objectAtIndex:indexPath.row] adTitle];
cell.realtyPriceLabel.text = [NSString stringWithFormat:@"R$%ld", [[self.realties objectAtIndex:indexPath.row] price]];
if (indexPath.row == [self.realties count])
cell = [tableView dequeueReusableCellWithIdentifier:LoadMoreCellIdentifier];
NSLog(@"%@", cell.class);
return cell;
@import UIKit;
@interface IGBRealtyCell : UITableViewCell
@property (weak, nonatomic) IBOutlet UIImageView *realtyImageView;
@property (weak, nonatomic) IBOutlet UILabel *realtyNameLabel;
@property (weak, nonatomic) IBOutlet UILabel *realtyPriceLabel;
@end
我错过了什么?
【问题讨论】:
cell
被声明为 UITableViewCell
而不是 IGBRealtyCell
或 YourSecondCustomCell
。检查那里的情况:***.com/questions/14303832/…
【参考方案1】:
您使用的是UITableViewCell
而不是IGBRealtyCell
。尝试将其转换为 IGBRealtyCell 变量。
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
UITableViewCell *cell;
if (indexPath.row != [self.realties count])
cell = [tableView dequeueReusableCellWithIdentifier:RealtyCellIdentifier];
IGBRealtyCell *realtyCell = (IGBRealtyCell*)cell;
NSLog(@"%@", cell.class);
realtyCell.realtyNameLabel.text = [[self.realties objectAtIndex:indexPath.row] adTitle];
realtyCell.realtyPriceLabel.text = [NSString stringWithFormat:@"R$%ld", [[self.realties objectAtIndex:indexPath.row] price]];
if (indexPath.row == [self.realties count])
cell = [tableView dequeueReusableCellWithIdentifier:LoadMoreCellIdentifier];
IGBRealtyCell *realtyCell = (IGBRealtyCell*)cell;
NSLog(@"%@", realtyCell.class);
return cell;
【讨论】:
但是objective-c不应该知道我的班级是IGBRealtyCell吗?它甚至记录正确的类。我不想创建另一个变量。而且 cell = (IGBRealtyCell *)[tableView dequeueReusableCellWithIdentifier:RealtyCellIdentifier] 也不起作用。 不,方法dequeueReusableCellWithIdentifier
正在返回您扩展的 UITableViewCell
对象。如果你需要你的类属性,你需要向下转换它。此外,检查单元格isKindOfClass
是否需要也是个好主意。另外请记住,您需要注册单元类,因为此方法用于获取可重复使用的单元。
你能告诉我你是否使用:[self.tableView registerNib: forCellReuseIdentifier:];
?您的网点是否在 xib 中连接?
不,它们是 Storyboard 中的原型单元。问题是 cell = [tableView dequeueReusableCellWithIdentifier:RealtyCellIdentifier]
返回 IGBRealtyCell
对象。 “注册单元类”是什么意思?以上是关于在“UITableViewCell”类型的对象上找不到属性的主要内容,如果未能解决你的问题,请参考以下文章
在“RKObjectManager”类型的对象上找不到属性“managedObjectStore”
在“CBPeripheral *”类型的对象上找不到属性“uuid”
在类型的对象上找不到 Restkit 2.0 'managedObjectContext'
在“ViewController”类型的对象上找不到属性引用?