0

我正在 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";

客户单元.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

那么,问题是什么?在我看来,这与奥特莱斯有关。

4

3 回答 3

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];
}
于 2013-01-30T05:04:29.983 回答
1

该错误(Property 'firstName' not found on object of type 'CustomCell*'):意味着编译器不知道名称为 的属性firstName。您需要通知编译器类中可用的属性,通常是通过导入头文件。

因此,在表格视图代码所在的文件顶部,输入:

#import "CustomCell.h"

(请注意,它在您的@implementation块之前,与其他#import的 .

于 2013-01-30T04:43:41.713 回答
0

为什么你+reuseIdentifier的 .h 文件中有类方法?您继承的UITableViewCell类有一个具有该名称的属性,所以这有点令人困惑。

此外,约定是为您的网点使用“弱”:@property (weak, nonatomic) IBOutlet UILabel *firstName;因为视图将具有其子视图的强副本。

我不确定为什么找不到您的财产。这是一个运行时错误。如果没有正确连接笔尖;一旦您尝试实例化该视图,您就会得到一个异常。您是否将该视图的“类”设置为 CustomCell?(虽然如果你不这样做,你应该让一个常规的 TableViewCell 出队并且无法设置你的插座,所以......)嗯。

于 2013-01-30T05:00:31.163 回答