表视图单元的附件视图仅显示在最后一个单元格中

时间:2014-08-05 07:41:47

标签: ios uitableview accessoryview

我希望在多个表格视图单元格中显示相同的配件视图,但始终只显示在最后一行。因此,我创建了一个非常简单的测试项目,它的行为相同。这是测试项目:

标题:

#import <UIKit/UIKit.h>
@interface TVController : UITableViewController
@end  

实施:

#import "TVController.h"
@interface TVController ()
@property (nonatomic, strong) UIImageView *image;
@end

@implementation TVController
- (void)viewDidLoad{
    [super viewDidLoad];
    self.image = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"TestImage38x38"]];
}

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{
    return 1;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
    return 4;
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"TableViewCell" forIndexPath:indexPath];
    cell.textLabel.text = @"test";
    cell.accessoryView = self.image;
    return cell;
}
@end

模拟器输出(复选标记是测试图像):

enter image description here

如您所见,尽管所有单元格设置相同,但图像仅显示在最后一行中 我做错了什么?

1 个答案:

答案 0 :(得分:1)

You can't add the same instance of a view to a superview more than once. A view can only have one parent view.您必须为每个单元格创建UIImageView的实例:

@property (nonatomic, strong) UIImage *image;
...
self.image = [UIImage imageNamed:@"TestImage38x38"];
...
cell.accessoryView = [[UIImageView alloc] initWithImage:self.image];