2011-11-11 17 views
6

Tôi đang gặp sự cố khi ghi đè phương thức GetHeight khi phát triển ứng dụng iPad với MonoTouch.Dialog. Tôi đang triển khai IElementSizing nhưng phương pháp GetHeight của tôi không bao giờ được gọi.MonoTouch Dialog StringElements Variable Cell Height

Có ai khác đã gặp sự cố này không? Cảm ơn.

Tôi đảm bảo rằng thư mục gốc của tôi.Không đồng đềuRows = true;

Tôi cũng đã thử bao gồm dự án hộp thoại và đặt điểm ngắt trong GetHeight() cho bất kỳ Thành phần nào thực hiện IElementSizing mà không có may mắn. Trong một dự án iPhone trước đây, điều này làm việc tốt nhưng trên iPad tôi vẫn còn bị mắc kẹt. Có bất kỳ 'gotchas' khác mà tôi có thể bị mất không?

Trả lời

10

Đây là loại lỗi trong MonoTouch.Dialog. Về cơ bản, khi bạn gán phần tử gốc nó muốn biết liệu có những hàng không đồng đều để nó có thể tạo và lưu trữ đối tượng UITableViewSource thích hợp.

Tuy nhiên, nếu bạn thêm Phần có Phần tử triển khai IElementSizing vào phần tử Gốc sau khi đối tượng Nguồn đã được tạo. Sau đó, nó sẽ không gọi ghi đè GetHeight của bạn. Một ví dụ về điều này là nếu bạn lấy dữ liệu async và gọi lại và thêm các Phần/Phần tử kết quả vào RootElement ... hoặc về cơ bản bất cứ lúc nào bạn thêm Phần/Phần tử sau khi PrepareRoot() được gọi.

Có một workaround đơn giản cho việc này:

this.Root.UnevenRows = true; 

Nếu không nhìn vào mã của bạn tuy nhiên, tôi không thể nói nếu đây là lỗi bạn đang nhìn thấy.