2011-08-31 40 views
6

Bộ điều khiển thêm UISegmentedControl vào thanh điều hướng. Điều khiển phân đoạn được thêm vào thanh điều hướng trong phương thức viewDidLoad của bộ điều khiển nhưng các phân đoạn thực được tạo động sau khi được gọi là viewDidLoad.Tự động thay đổi kích thước trong thanh điều hướng của điều khiển phân đoạn được tạo động

Tôi không thể tự động thay đổi kích thước phân đoạn khi chế độ xem được hiển thị. Tất cả chúng đều bị xóa, like in this post, mặc dù độ phân giải không áp dụng ở đây. Nếu các phân đoạn được thêm trước khi điều khiển phân đoạn được thêm vào mục bên phải của thanh điều hướng (phá vỡ tính chất động của mã), chúng được tự động thay đổi kích thước và trông đẹp khi chế độ xem được hiển thị.

Đây là phiên bản rút gọn của mã của tôi, bên dưới. Tôi đang thiếu gì?

@implementation MyController  

- (void)viewDidLoad { 

    // segmentedControl is an ivar 
    segmentedControl = [UISegmentedControl alloc] initWithItems:[NSArray array]]; 
    UIBarButtonItem *barButtonItem = [[UIBarButtonItem alloc] initWithCustomView:segmentedControl] autorelease]; 
    self.navigationController.navigationBar.topItem.rightBarButtonItem = barButtonItem; 

} 

- (void)someMethodCalledAfterViewDidLoad { 

    [segmentedControl insertSegmentWithTitle:@"a title" 
            atIndex:0 
            animated:NO]; 
} 

@end 

Trả lời

14

Sau khi gọi insertSegmentWithTitle gọi

[segmentedControl sizeToFit];

+0

Xin chào @ Krystsztof, tôi đã thử điều đó nhưng nó không hoạt động đáng buồn. – ptrico

+1

Làm việc cho chúng tôi, cảm ơn !!! –

1

tôi đã cùng một vấn đề ngày nay - phân khúc UISegmentedControl ban đầu được hiển thị với độ rộng biến thích hợp, nhưng không mở rộng hoặc hợp đồng cho phù hợp với chiều dài của các tiêu đề mới, được cập nhật động.

Gửi điều khiển được phân đoạn một thông báo setNeedsLayout sau mỗi lần cập nhật đã giải quyết được sự cố.

[segmentedControl setNeedsLayout]; 
+0

Xin chào @fedonev, cảm ơn bạn đã trả lời câu hỏi cũ này. Tôi sẽ chấp nhận câu trả lời của bạn mặc dù tôi đã không thử nghiệm nó bản thân mình. Tôi nghĩ rằng tôi đã kết thúc tính toán và thiết lập chiều rộng trên mỗi phân đoạn theo chương trình. Giải pháp của bạn nghe có vẻ đơn giản hơn. – ptrico

+0

sizeToFit thực hiện công việc và trong trường hợp tiêu đề phân khúc đã được thay đổi. – Jeff

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