Tôi đang cố gắng tìm cách đặt thời UITableViewCellStyle
điểm sử dụng các phương pháp mới trong iOS 6 cho UITableView
.
Trước đây, khi tạo một UITableViewCell
tôi sẽ thay đổi UITableViewCellStyle
enum để tạo ra các loại ô mặc định khác nhau khi gọi initWithStyle:
nhưng từ những gì tôi có thể thu thập, điều này không còn xảy ra nữa.
Tài liệu của Apple cho UITableView
các tiểu bang:
Giá trị trả về : Một đối tượng UITableViewCell với số nhận dạng tái sử dụng được liên kết. Phương thức này luôn trả về một ô hợp lệ.
Thảo luận : Vì lý do hiệu suất, nguồn dữ liệu của chế độ xem bảng thường sử dụng lại các đối tượng UITableViewCell khi nó gán các ô cho các hàng trong phương thức tableView: cellForRowAtIndexPath:. Chế độ xem bảng duy trì hàng đợi hoặc danh sách các đối tượng UITableViewCell mà nguồn dữ liệu đã đánh dấu để sử dụng lại. Gọi phương thức này từ đối tượng nguồn dữ liệu của bạn khi được yêu cầu cung cấp ô mới cho chế độ xem bảng. Phương thức này xếp hàng đợi một ô hiện có nếu một ô có sẵn hoặc tạo một ô mới dựa trên lớp hoặc tệp nib mà bạn đã đăng ký trước đó.
Quan trọng : Bạn phải đăng ký một lớp hoặc tệp nib bằng phương thức registerNib: forCellReuseIdentifier: hoặc registerClass: forCellReuseIdentifier: trước khi gọi phương thức này.
Nếu bạn đã đăng ký một lớp cho số nhận dạng được chỉ định và một ô mới phải được tạo, phương thức này sẽ khởi tạo ô bằng cách gọi phương thức initWithStyle: reuseIdentifier: của nó. Đối với các ô dựa trên nib, phương pháp này tải đối tượng ô từ tệp nib được cung cấp. Nếu một ô hiện có sẵn sàng để sử dụng lại, phương thức này sẽ gọi phương thức readyForReuse của ô đó.
Đây là giao diện mới của tôi cellForRowAtIndexPath
sau khi triển khai các phương pháp mới:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *cellIdentifier = @"cell_identifier";
[tableView registerClass:[UITableViewCell class] forCellReuseIdentifier:cellIdentifier];
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier forIndexPath:indexPath];
return cell;
}
Mã mà tôi có cho đến nay hoạt động tốt nhưng luôn trả về kiểu mặc định. Làm thế nào tôi có thể thay đổi điều này để tôi có thể tạo ra các tế bào với các phong cách khác như UITableViewCellStyleDefault
, UITableViewCellStyleValue1
, UITableViewCellStyleValue2
và UITableViewCellStyleSubtitle
?
Tôi không muốn phân lớp con UITableViewCell
, tôi chỉ muốn thay đổi kiểu mặc định như tôi có thể làm trước iOS 6. Có vẻ kỳ lạ là Apple sẽ cung cấp các phương pháp nâng cao nhưng với tài liệu tối thiểu để hỗ trợ việc triển khai chúng.
Có ai nắm vững điều này, hoặc gặp phải một vấn đề tương tự? Tôi đang đấu tranh để tìm bất kỳ thông tin hợp lý nào cả.
UITableViewCell
để lấy các kiểu mặc định khác là một điều khó khăn vì nó chỉ tạo ra các tệp không cần thiết. Cảm ơn bình luận của bạn và xác nhận những nghi ngờ của tôi.