2011-06-30 29 views
15

Tôi không cố định lại kích thước chiều cao của PickerView. Tôi tốt với có kích thước mặc định, mà tôi tin là 320 x 216. Tôi tạo ra mã này để trình bày một pickerView trong popovercontroller của tôi, tuy nhiên, tôi nhận được các thông báo trên giao diện điều khiển:UIPIckerView trong UIPopoverController

011-06-30 13:18:28.125 MiGenome[64357:207] -[UIPickerView setFrame:]: invalid height value 1024.0 pinned to 216.0 
2011-06-30 13:18:28.126 MiGenome[64357:207] -[UIPickerView setFrame:]: invalid height value 448.0 pinned to 216.0 
2011-06-30 13:18:28.127 MiGenome[64357:207] -[UIPickerView setFrame:]: invalid height value -16.0 pinned to 162.0 

Tôi không biết tại sao tôi nhận được điều này vì tôi đang cố gắng sử dụng kích thước mặc định của trình chọn trong cửa sổ bật lên. Đây là mã của tôi. Cảm ơn.

- (IBAction)presentSortPopover { 
    UIViewController *sortViewController = [[UIViewController alloc] init]; 

    UIPickerView *sortPickerView = [[UIPickerView alloc] initWithFrame:CGRectMake(0, 0, sortViewController.view.bounds.size.width, sortViewController.view.bounds.size.height)]; 
    sortViewController.view = sortPickerView; 
    sortViewController.contentSizeForViewInPopover = CGSizeMake(320, 216); 
    sortPickerView.delegate = self; 
    sortPickerView.dataSource = self; 
    sortPickerView.showsSelectionIndicator = YES; 

    self.SortPopover = [[UIPopoverController alloc] initWithContentViewController:sortViewController]; 
    [self.SortPopover presentPopoverFromRect:_sortButtonPop.frame inView:self.view permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES]; 

    [sortPickerView release]; 
    [sortViewController release]; 
} 
+0

Giới hạn (kích thước/chiều rộng) của sortViewController là gì? Bạn đang thiết lập khung của UIPickerView đến đó trong phương thức initWithFrame của bạn; nếu nó không phải là kích thước bạn muốn, bạn sẽ phải thay đổi cuộc gọi CGRectMake để bao gồm giá trị chính xác. – Zeppomedio

+0

Vâng tôi đã cố gắng mà ban đầu cũng có. Tôi đã thử tạo khung của sortViewController của tôi là 320.216, nhưng tôi vẫn nhận được những câu lệnh trên bàn điều khiển. Ngoài ra, nếu tôi thay đổi chiều cao của 216 đến 500, tôi sẽ KHÔNG thấy bất kỳ thay đổi nào. Tôi chỉ thấy thay đổi nếu tôi thay đổi thuộc tính contentSizeForViewInPopover. – Crystal

+1

Bất kỳ sự may mắn nào với vấn đề này. Tôi đang gặp vấn đề tương tự. Tôi nghĩ rằng Popover đang cố gắng thay đổi kích thước khung của bộ chọn. – Bach

Trả lời

1

Tôi nghĩ rằng dòng này là thủ phạm.

UIPickerView *sortPickerView = [[UIPickerView alloc] initWithFrame:CGRectMake(0, 0, sortViewController.view.bounds.size.width, sortViewController.view.bounds.size.height)]; 

thử

UIPickerView *sortPickerView = [[UIPickerView alloc] initWithFrame:CGRectMake(0, 0, 320, 216)]; 
+0

Vâng đó là những gì tôi đã có. Tôi đã cố gắng ban đầu làm cho 320 rect, 216, sau đó tôi nghĩ có lẽ đó là cho tôi vấn đề. Vì vậy, tôi đã cố gắng không đặt nó vào một số, và chỉ cần điền vào khung. Thật không may, tôi nhận được lỗi cả hai cách. : - \. Cảm ơn bạn đã nhập liệu! – Crystal

10

tôi đã cùng một vấn đề cho đến khi tôi nhúng UIPickerView trong một generic UIView với kích thước tương tự (0, 0, 320, 216), và thiết lập thuộc tính view controller quan điểm của đến UIView.

Ngoài ra, tôi đã sử dụng phương pháp setPopoverContentSize:animated: trên UIPopoverViewController để đặt kích thước cửa sổ bật lên, thay vì đặt nó trên UIViewController.

Hy vọng điều đó sẽ hữu ích.

+1

Tôi cũng nhận được lỗi '- [UIPickerView setFrame:]: giá trị độ cao không hợp lệ' ... vì tôi đã đặt autoresizingMask trên UIPickerView. –

1

UIViewController có phương pháp được gọi là contentSizeForViewInPopover. Nếu bạn đặt kích thước mong muốn cho bộ điều khiển chế độ xem bằng cách sử dụng nó (sử dụng CGSize), bạn sẽ có thể ngăn không cho tự động sửa đổi số UIPopoverController.

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