2014-10-28 16 views
5

Tôi có bộ điều khiển chế độ xem bảng có nội dung được đặt sau viewDidLoad. Khi đặt nội dung mới, tôi tính toán preferredContentSize. Trước khi tôi trình bày cửa sổ bật lên, tôi có thể truy vấn preferredContentSize của bộ điều khiển chế độ xem của tôi, điều này là chính xác. Nhưng sau khi trình bày tôi nhận được kích thước tiêu chuẩn của cửa sổ bật lên (320x480). Nếu tôi sử dụng setPopoverContentSize:animated: với các giá trị được truy vấn trước, mọi thứ đều hoạt động.Khi nào được ưu tiênContentSize tôn trọng?

Câu hỏi của tôi bây giờ là tại sao nó không tôn trọng ngay preferredContentSize ngay từ đầu? Tôi đang làm gì sai?

Trả lời

5

Bây giờ tôi đã gặp sự cố tương tự một lần khác. Nếu tôi đặt bảng tính chiều cao của tôi vào viewWillAppear hơn nó hoạt động:

public override void ViewWillAppear (bool animated) 
{ 
    base.ViewWillAppear (animated); 

    TableView.LayoutIfNeeded(); 
    this.PreferredContentSize = new SizeF (320f, TableView.ContentSize.Height); 
} 

Mã này là trong C# nhưng bạn có thể dễ dàng chuyển nó sang Objective-C hoặc Swift.

+0

giải pháp này hoạt động hoàn hảo với tôi. Cảm ơn bạn: D: D: D: D –

1

Tôi đã chuyển mã thử nghiệm thành Swift 2.0.

override func viewWillAppear(animated: Bool) { 
    super.viewWillAppear(animated) 
    tableView.layoutIfNeeded() 
    preferredContentSize.height = tableView.contentSize.height 
} 
Các vấn đề liên quan