我正在iOS 6中编写应用程序。 这是来自ViewController.m文件的代码片段:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
CustomCell *cell = (CustomCell *)[tableView dequeueReusableCellWithIdentifier:@"CustomCellIdentifier"];
if (cell == nil) {
[[NSBundle mainBundle] loadNibNamed:@"CustomCell" owner:self options:nil];
cell = _customCell;
_customCell = nil;
}
cell.firstName.textLabel = @"dsdsds";
cell.middleName.textLabel = @"N/A";
cell.lastName.textLabel = @"daasdsdasa";
return cell;
}
这些代码行给了我错误(Property 'firstName' not found on object of type 'CustomCell*'
):
cell.firstName.textLabel = @"dsdsds";
cell.middleName.textLabel = @"N/A";
cell.lastName.textLabel = @"daasdsdasa";
CustomeCell.h:
#import <UIKit/UIKit.h>
@interface CustomCell : UITableViewCell
@property (strong, nonatomic) IBOutlet UILabel *firstName;
@property (strong, nonatomic) IBOutlet UILabel *middleName;
@property (strong, nonatomic) IBOutlet UILabel *lastName;
+(NSString*) reuseIdentifier;
@end
In the Outlets of CustomCell.xib:
firstName -> label
middleName -> label
lastName -> label
Referencing Outlets:
customCell -> File's Owner
Selecting the firstName label:
Referencing Outlets:
firstName -> CustomCell
firstName -> CustomCell -CustomCellIdentifier
Selecting the middleName label:
lastName -> Custom Cell - CustomCellIdentifier
middleName -> Custom Cell
Selecting the lastName label:
lastName -> Custom Cell
middleName -> Custom Cell- Custom Cell Identifier
那么,问题是什么?在我看来,这与奥特莱斯有关。
答案 0 :(得分:1)
错误(Property 'firstName' not found on object of type 'CustomCell*'):
表示编译器不知道名称为firstName
的属性。您需要通知编译器类中可用的属性,通常是通过导入头文件。
因此,在表视图代码所在文件的顶部,放置:
#import "CustomCell.h"
(请注意,它会在@implementation
阻止之前,而在其他#import
之后。
答案 1 :(得分:1)
我在你的代码中看到了一些错误:
cell.firstName.textLabel = @"dsdsds";
cell.middleName.textLabel = @"N/A";
cell.lastName.textLabel = @"daasdsdasa";
问题是UILabel没有像textLabel这样的属性。
将其更改为:
cell.firstName.text = @"dsdsds";
cell.middleName.text = @"N/A";
cell.lastName.text = @"daasdsdasa";
如果您没有合成该属性,请使用以下代码:
cell._firstName.text = @"dsdsds";
cell._middleName.text = @"N/A";
cell._lastName.text = @"daasdsdasa";
同样改变:
if (cell == nil) {
[[NSBundle mainBundle] loadNibNamed:@"CustomCell" owner:self options:nil];
}
到
if (cell == nil) {
NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"CustomCell" owner:self options:nil];
cell = (CustomCell *)[nib objectAtIndex:0];
}
答案 2 :(得分:0)
为什么你的.h文件中有类方法+reuseIdentifier
?您继承的UITableViewCell
类具有该名称的属性,因此有点令人困惑。
此外,惯例是对您的网点使用“弱”:@property (weak, nonatomic) IBOutlet UILabel *firstName;
,因为该视图将包含其子视图的强大副本。
我不确定为什么你的财产没有找到。这是一个运行时错误。如果没有正确连接笔尖的东西;一旦尝试实例化该视图,就会遇到异常。您是否将该视图的“类”设置为CustomCell? (虽然如果你不这样做,你应该将一个普通的TableViewCell出列,并且无法设置你的插座,所以......)嗯。