2014-11-13 17 views
5

Tôi đang xây dựng chế độ xem bảng cơ bản trên iOS 8. Tôi đã xem video WWDC '14 về chủ đề tự động hóa ô và đang cố gắng tái tạo khái niệm nhưng có một số vấn đề. Trên viewDidLoad: Tôi đang gọi:iOS UITableViewAutomaticDimension RowHeight Hiệu suất kém/Nhảy

//estimate for my cells though they may vary 

self.tableView.estimatedRowHeight = 300.0; 

self.tableView.rowHeight = UITableViewAutomaticDimension; 

Khi xem và tải bảng của tôi, hiệu suất là ok. Khi tôi bấm vào một ô, chương trình sẽ đưa tôi đến một khung nhìn chi tiết. Khi tôi nhấn nút quay lại trên chế độ xem đó và quay lại chế độ xem bảng, đó là khi mọi thứ bắt đầu hoạt động lạ. Các tế bào sau đó bắt đầu 'nhảy' trong khi tôi đang cuộn. Bằng cách nhảy tôi có nghĩa là họ không di chuyển trơn tru - họ có xu hướng giật hoặc nhảy từ nơi này sang nơi khác.

Tôi nên thêm bộ nhớ đó không phải là mối quan tâm vì các ô đang được sử dụng lại và có ít dữ liệu trong nền. Các ràng buộc trên các ô của tôi (trong tệp bảng phân cảnh) cũng có màu xanh và tôi không thấy ngoại lệ ràng buộc tự động hoàn thành trong trình gỡ lỗi.

Có ai khác đã xem loại hành vi này với UITableViewAutomaticDimension? Nó chỉ là một lỗi của Apple hoặc có nhiều hơn không? Cảm ơn.

+0

Tôi đang gặp phải vấn đề tương tự? bất kỳ cách giải quyết nào? –

+0

@AhmadRaza Những gì tôi đã làm cuối cùng là quay lại các ô được mã hóa bằng tay để đảm bảo toàn quyền kiểm soát bố cục và chức năng. Vì vậy, về cơ bản, thay vì sử dụng trình xây dựng giao diện, tôi chỉ bố trí tất cả các phần tử của ô trong mã và sau đó ghi đè tableView: heightForRowAtIndexPath: để cho tableView biết mỗi ô sẽ cao bao nhiêu. –

+1

Tôi đã gửi một lỗi với táo (trên hành vi này) và họ xác nhận rằng đó là một lỗi (và một bản sao của một đã nộp) nhưng không cung cấp bất kỳ thông tin nhiều hơn (khá khó chịu). Vì vậy, tôi giả định UITableViewAutomaticDimesion được biết đến là một lỗi bit. Tôi sẽ tránh nó nếu có thể. –

Trả lời

0

ADD phương pháp đại biểu thêm một mã

- (CGFloat) tableView: (UITableView *) tableView estimatedHeightForRowAtIndexPath: (NSIndexPath *) indexPath {return Approxheight;}

nó sẽ được tải UITableView đầu hơn thời gian hiện tại. tôi hy vọng điều này sẽ làm việc cho bạn.

5

Tôi đã tìm thấy vấn đề lạ sử dụng dòng self.tableView.rowHeight = UITableViewAutomaticDimension;

Nhưng sau đó, mọi thứ đã tốt hơn rất nhiều khi tôi thay thế nó bằng phương pháp đại biểu. Trong trường hợp của bạn là:

- (CGFloat) tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { 
    return UITableViewAutomaticDimension; 
} 

- (CGFloat) tableView:(UITableView *)tableView estimatedHeightForRowAtIndexPath:(NSIndexPath *)indexPath { 
    return 300.0f; 
}