2010-07-30 30 views
9

Sự khác nhau giữa việc thêm chế độ xem con vào chế độ xem bản thân và chế độ xem nội dung là gì?Phân lớp UITableViewCell chính xác?

subview thêm vào tự

- (id)initWithFrame:(CGRect)frame { if ((self = [super initWithFrame:frame])) { 
    UIImage *img = [UIImage imageNamed:@”lol.jpg”]; 
    UIImageView *imgView = [[UIImageView alloc] initWithImage:img]; 
    [self addSubview:imgView]; 
    [imgView release]; 
    return self; 
} 

subview thêm vào contentView

- (id)initWithFrame:(CGRect)frame { if ((self = [super initWithFrame:frame])) { 
    UIImage *img = [UIImage imageNamed:@”lol.jpg”]; 
    UIImageView *imgView = [[UIImageView alloc] initWithImage:img]; 
    [self.contentView addSubview:imgView]; 
    [imgView release]; 
    return self; 
} 

Trả lời

25

Theo Apple docs:

Quan điểm nội dung của một đối tượng UITableViewCell là SuperView mặc định cho nội dung được hiển thị bởi ô. Nếu bạn muốn tùy chỉnh các ô bằng cách thêm các khung nhìn bổ sung, bạn nên thêm chúng vào khung nhìn nội dung để chúng được định vị một cách thích hợp khi các ô chuyển tiếp vào và ra khỏi chế độ chỉnh sửa.

Nói chung bạn thêm vào một contentView khi bạn cảm thấy thoải mái với thay đổi kích thước và vị trí của nội dung của bạn của bạn đang được xử lý bởi các thiết lập autoresize, và phân lớp UITableViewCell khi bạn cần một số hành vi và các tùy chỉnh. Hướng dẫn lập trình Apple Table View có phần tuyệt vời trên customizing UITableViewCells.

0

Bạn nên luôn đặt chế độ xem tùy chỉnh của mình vào ô contentView. Hãy chắc chắn bạn không sử dụng

cell.textLabel?.text 
0

của nó bởi vì khi một tableviewcell đi vào chỉnh sửa chế độ nó sẽ thêm điều khiển khác như nút delete để tế bào. do đó, nội dung của bạn nên được thay đổi kích thước để nhường chỗ cho các điều khiển mới. Nếu bạn thêm trực tiếp các bài đánh giá của mình vào tableviewcell, các điều khiển chỉnh sửa này sẽ làm mờ các phần phụ mà bạn đã thêm vào. Ô không thể điều chỉnh kích thước của nó khi vào chế độ chỉnh sửa (nó phải giữ nguyên chiều rộng của khung nhìn bảng). nhưng đối tượng contentView có thể làm được. đó là lý do tại sao bạn nên thêm các bản xem trước của bạn vào đối tượng contentView.

Các vấn đề liên quan