iOS UITableViewCell添加标签和图像

时间:2013-07-19 13:29:53

标签: ios objective-c

我正在尝试在UITableViewCell中添加文本标签或UIImage(无关紧要)。 但它没有出现。我在这个单元格中使用的视图很少。您可以在下面的代码中看到它:

    - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
    {
        static NSString *CellIdentifier = @"timelineCell";
        KMWTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];

        if (cell)
        {
            cell = [cell initWithFrame:CGRectMake(13, 10, 293, 200)];

            UIView *cellContentView = [[UIView alloc] initWithFrame:CGRectMake(13, 10, 293, 200)];
            cellContentView.layer.cornerRadius = 5;
            cellContentView.layer.shadowOffset = CGSizeMake(1, 0);
            cellContentView.layer.shadowColor = [[UIColor blackColor] CGColor];
            cellContentView.layer.shadowRadius = 5;
            cellContentView.layer.shadowOpacity = .25;
            cellContentView.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"cellBack"]];


            UIView *selectedContentView = [[UIView alloc] initWithFrame:CGRectMake(13, 10, 293, 200)];
            selectedContentView.layer.cornerRadius = 5;
            selectedContentView.layer.shadowOffset = CGSizeMake(1, 0);
            selectedContentView.layer.shadowColor = [[UIColor blackColor] CGColor];
            selectedContentView.layer.shadowRadius = 5;
            selectedContentView.layer.shadowOpacity = .25;
            selectedContentView.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"cellBackActive"]];


            UIView *visibleContentView = [[UIView alloc] initWithFrame:CGRectMake(13, 10, 293, 200)];
            visibleContentView.layer.cornerRadius = 5;
            visibleContentView.layer.shadowOffset = CGSizeMake(1, 0);
            visibleContentView.layer.shadowColor = [[UIColor blackColor] CGColor];
            visibleContentView.layer.shadowRadius = 5;
            visibleContentView.layer.shadowOpacity = .25;
            visibleContentView.backgroundColor = [UIColor clearColor];
//Image adding here:
 [ UIImageView *image = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"active.png"]];
        [visibleContentView addSubview:image];

            [cellContentView addSubview:visibleContentView];
            [selectedContentView addSubview:visibleContentView];

            [cell setBackgroundView:cellContentView];
            [cell setSelectedBackgroundView:selectedContentView];

        }

        return cell;
    }

正如您所看到的,我正在使用backgroundView和selectedBackgroundView,并使用clearColor查看其他信息。那么为什么其他元素不能在visibleView中显示?

更新

我正在使用子类,因为我需要更改单元格的帧大小。

3 个答案:

答案 0 :(得分:1)

我认为问题在于您将visibleContentView添加到selectedContentView后立即添加到cellContentView。这会将其从cellContentView中删除,因为视图一次只能有一个超级视图。所以visibleContentView实际上在selectedContentView。如果KMWTableViewCell正常工作,则应在选择单元格时看到缺少的组件。

答案 1 :(得分:0)

您可以尝试更改“KMWtableViewCell”行

KMWTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];

我认为KMWTableViewCell可能会产生问题。

答案 2 :(得分:0)

我真的不知道这是不是正确的答案,因为我离开了我的Mac,但我认为你应该更换

KMWTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];

KMWTableViewCell *cell = (KMWTableViewCell*)[tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];
希望它有所帮助!