【问题标题】:First 5 cells not showing image in custom TableView Cell - iOS前 5 个单元格未在自定义 TableView 单元格中显示图像 - iOS
【发布时间】:2016-04-21 00:30:41
【问题描述】:

我有一个UITableView,我已将其转换为水平表格视图,还有一个自定义UITableViewCell,它只有一个UIImageView 和一个UILabel

问题是,前 5 个单元格不显示图像,但是当我滚动并返回它们时,会显示图像。不知道是什么问题:(

(下图,请看水平的tableview,忽略垂直的)

这是我在 TableViewController 类中的代码:

-(void)viewDidLoad
{
    //Rotating the tableview angle -PI/2 Rad = -90 Degrees
    _friendsTableView.transform= CGAffineTransformMakeRotation(-M_PI_2);

    _friendsTableView.translatesAutoresizingMaskIntoConstraints = YES;
    CGRect frame = _friendsTableView.frame;
    frame.origin.y= _segmentControl.frame.size.height;
    frame.origin.x= 0;
    frame.size.width = self.view.frame.size.width;
    frame.size.height = 105.5;
    _friendsTableView.frame= frame;
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{
    FriendsTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Cell" forIndexPath:indexPath];

    if (nil == cell) {
            cell = [[FriendsTableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:identifier];
        }

        if(cell)
        {
            cell.user = cellsArray_[indexPath.row];
            cell.transform =CGAffineTransformMakeRotation(M_PI_2);

        }
        return cell;
}

现在这是我设置图像和标签的自定义单元格类代码(_user 是一个属性,所以这个 setter 方法会自动从cell.user 调用):

-(void)setUser
{
    _profileImageView.layer.cornerRadius = _profileImageView.frame.size.width/2;

    _user = user;

    _nameLabel.text = @"Hello";

    [_profileImageView setImage:[UIImage imageNamed:@"placeholder_image"]];
}

【问题讨论】:

  • 你在哪里调用这个方法setUser?
  • @SahebRoy 很抱歉造成混淆,user 是一个属性,它的 setter 方法会在执行 cell.user 时自动获取。

标签: ios objective-c iphone uitableview uiimageview


【解决方案1】:

为什么不使用 Collection View 控制器。改造 Tableview 控制器好像不太好。

在您的代码中,您没有调用您的 setUser 方法。

对于自定义表格视图单元格,您可以在

中添加以下代码
 -(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{

MyCustomCell *cell = [tableView dequeueReusableCellWithIdentifier:strID];
            if (cell == nil)
            {
              NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"MyCustomCell" owner:self options:nil];
                cell = [nib objectAtIndex:0];
            }
}

【讨论】:

  • 我猜他只是在自定义单元格中对 _user 进行了同步,当他调用 cell.user = ...时,他会自动调用 setUser。
  • 对不起,user 是一个属性,它的 setter 方法在cell.user 被执行时自动获取。
【解决方案2】:

根据我的经验,这与 Cells 的可重用性密切相关,我曾经遇到过类似的问题,我的解决方案是在将某些内容分配给 IBoulet 之前,确保将其留空,然后分配它,它应该可以工作.

【讨论】:

    猜你喜欢
    • 2012-06-06
    • 1970-01-01
    • 2019-08-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多