UITableViewCell正在加载填充内容而不是程序输入?

时间:2013-11-29 00:28:42

标签: ios iphone objective-c uitableview

我创建了一个包含3 UITableViewCellUILabels的自定义UIImageView。我通过故事板进行设置,并且有一个UITableView类连接到表格单元格。在那个类中,我想要处理不同的UI对象,并且可以选择从我的视图控制器传递信息。

这是我的表格单元格视图类的

@property (retain, nonatomic) IBOutlet GBPathImageView *ProfileThumbnailImageView;
@property (weak, nonatomic) IBOutlet UILabel *profileDisplayNameLabel;
@property (weak, nonatomic) IBOutlet UILabel *profileUniversityNameLabel;
@property (weak, nonatomic) IBOutlet UILabel *profileNumberOfStringsLabel;

@property (strong, nonatomic) NSString *profileDisplayName;
@property (strong, nonatomic) UIImage *profileThumbnailImage;
@property (strong, nonatomic) NSString *profileUniversityName;
@property (nonatomic) NSUInteger profileNumberOfStrings;


- (id)initWithProfileImage:(UIImage *)profileImage
               displayName:(NSString *)displayName
            universityName:(NSString *)universityName
       numberOfUserStrings:(NSUInteger)numberOfStrings;

正如您所看到的,我有一个所有故事板对象都连接到的属性插座。我还拥有每条必要信息的属性。在我的视图控制器中

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

方法我想用我传入的信息来实例化这个自定义单元格。我想用正确的信息设置信息属性,并在视图类中设置它。

以下是前面提到的方法中的代码:

static NSString *cellIdentifier = @"UserProfileCell";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier];

    if ([cell isKindOfClass:[StringrUserTableViewCell class]]) {

        StringrUserTableViewCell * userProfileCell = (StringrUserTableViewCell *)cell;

        userProfileCell.profileDisplayName = @"Alonso Holmes";

        //userProfileCell.profileDisplayNameLabel.text = @"User Name"; 
    }

我有两行,一个是为名称设置信息属性,我在视图的.m文件中将其设置为该属性名称。发生的问题是profileDisplayName属性在尝试设置UILabels文本时为空。如何一次设置此信息,以便在加载单元格或最初加载单元格之前将其存在?您还可以看到注释掉的行,我直接在那里设置UILabel的文本。我不希望这样做,因为我想将抽象/逻辑留给视图的类。我设置的图像视图是自定义的,因此需要更多代码。

1 个答案:

答案 0 :(得分:0)

您正尝试在profileDisplayName中设置NSString类型而不是UILabel类的文字。 (见@property (strong, nonatomic) NSString *profileDisplayName;)。 更改您的代码行: 这是问题

userProfileCell.profileDisplayName = @“Alonso Holmes”; //使用Label Object而不是NSString