0

在我的 UITableView 的 viewDidLoad 中,我正在调用:

[self registerNib:[UINib nibWithNibName:@"MyCell" bundle:nil] forCellReuseIdentifier:@"MyCellRI"];

然后在 cellForRowAtIndexPath 我有以下内容:

MyCell *cell = [tableView dequeueReusableCellWithIdentifier:@"MyCellRI"];

[cell setup:[items objectAtIndex:indexPath.row]];

在设置方法中,我查看了 [self subviews] 以通过子视图并根据键/值分配内容,但在此循环中,我找到了 UITableViewCellContentView,但我没有看到在 NIB 中定义的自定义视图。

在 NIB 中,我分配了文件所有者和单元格的自定义类。单元格显示我只是在子视图中找不到 NIB 视图。

请指教。

詹姆士

4

1 回答 1

0

遍历子视图是一项艰巨的工作)尽量避免它。这不是很好的做法,因为它不可靠。例如,如果您决定更改自定义单元格 UI,则必须更改迭代子视图的方法。

尝试执行以下操作:

假设有一个带有 UIImage 和 3 个字符串(例如人名、年龄和手机号码)的自定义单元格

在您的自定义单元格中实现 3 个函数以设置此值,如下所示:

MyCustomCell.h ... .h 文件标准代码,然后在最后 ...

@propert(nonatomic, strong) IBOutlet UIImageView *myImage;
@propert(nonatomic, strong) IBOutlet UILabel *myFirstLabel;
@propert(nonatomic, strong) IBOutlet UILabel *mySecondLabel;
@propert(nonatomic, strong) IBOutlet UILabel *myThirdLabel;
- (void)setUIimage:(UIImage *)_image;
- (void)setFirstString:(NSString *)_string;
- (void)setSecondString:(NSString *)_string;
- (void)setThirdString:(NSString *)_string;

MyCustomCell.m:

@synthesize myImageView, myFirstLabel, mySecondLabel, myThirdLabel;

- (void)setUIimage:(UIImage *)_image {
    self.myImageView.image = _image;
}

- (void)setFirstString:(NSString *)_string {
    self.myFirstLabel.text = _string;
}

 - (void)setSecondString:(NSString *)_string {
    self.mySecondLabel.text = _string;
}

 - (void)setThirdString:(NSString *)_string {
    self.myThirdLabel.text = _string;
}

最后在你的 tableView 控制器 cellForRowAtIndexPath

[myCustomCell setUiImage:someImage];
[myCustomCell setFirstString:oneString];
[myCustomCell setSecondString:twoString];
[myCustomCell setThirdString:threeString];

希望这种方法对您有所帮助。如果您有任何问题,请随时询问

于 2013-06-13T16:49:04.200 回答