【问题标题】:Can I pass data to a custom UITableViewCell?我可以将数据传递给自定义 UITableViewCell 吗?
【发布时间】:2015-01-18 03:45:50
【问题描述】:

我正在尝试将数据传递给自定义 UITableViewCell,但变量(例如 studentId)始终为空。有人可以帮忙指出我做错了什么吗?

CustomCell.h:

#import <UIKit/UIKit.h>

@interface CustomCell : UITableViewCell { }
@property (strong, nonatomic) NSNumber *studentId;
- (id)initWithStudentId:(NSNumber *)newStudentId;
@end

CustomCell.m:

#import "CustomCell.h"

@interface CustomCell ()
@end

@implementation CustomCell { }

@synthesize studentId = _studentId;

- (id)initWithStudentId:(NSNumber *)newStudentId {
    if (self = [super init]) {
        _studentId = newStudentId;
    }

    return self;
}

StudentTable.m:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    NSNumber *myStudentId = @5;

    CustomCell *cell = (CustomCell *)[tableView dequeueReusableCellWithIdentifier:@"studentCell"];
    if(cell == nil){
        cell = [[CustomCell alloc] initWithStudentId:myStudentId;
    }
    return cell;
}

【问题讨论】:

  • 在你cellForRowAtIndexPath上测试myStudentId的值。你是怎么定义myStudentId的?
  • 我在我的 appDelegate 中设置了它,我已经检查过了,它有一个可以使用的值。我已经硬编码 myStudentId 用于演示目的,它仍然没有将它传递给我的 CustomCell init。
  • 您是否在情节提要中定义了表格视图单元格? (例如,界面构建器中的原型单元,具有重用标识符 studentCell)
  • 我没有。我希望以编程方式完成这一切,这可能吗?
  • 内特,你真是个天才!我不完全理解 dequeueReusableCellWithIdentifier 做了什么,但现在这很有意义。我现在正在我的 CustomCell 中初始化值。谢谢,您应该将其发布为答案

标签: xcode uitableview


【解决方案1】:

变量没有被传递,因为您仅在单元​​格为 nil 时才初始化数据(或者对于这种情况,您可能已经在情节提要中定义了原型单元格)。

要解决此问题,只需在 if 语句 cell == nil 之后执行以下 操作:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
     Int myStudentId = @5;

     CustomCell *cell = (CustomCell *)[tableView dequeueReusableCellWithIdentifier:@"studentCell"];
     if(cell == nil){
         cell = [[CustomCell alloc] initWithStudentId:[NSNumber numberWithInt:myStudentId]];
     }


     cell.studentId = [NSNumber numberWithInt:myStudentId];


     return cell;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-08
    • 1970-01-01
    • 2010-10-08
    • 1970-01-01
    • 1970-01-01
    • 2017-09-05
    相关资源
    最近更新 更多