2010-12-11 38 views
8

Tôi muốn nhúng một UISegmentedControl ở đâu đó trong thanh công cụ UINavigationController s của tôi.UISegmentedControl được nhúng trong một UINavigationBar/Item

Không có vấn đề gì khi nhúng nó vào một số UIBarButtonItem và đặt nó làm thanh barButtonItem trái hoặc phải.

Tôi có thể hiểu cách tiếp cận này khi xử lý bất động sản trên màn hình của iPhone. Tôi, tuy nhiên, làm điều này trong một Popover trên iPad và có "rất nhiều" không gian dọc có sẵn trong topbar. Nếu tôi thêm segmentedControl như một barButtonItem trái hoặc phải, nó sẽ được thu nhỏ lại để tôi không thể nhìn thấy văn bản trên nút phân đoạn của tôi, nó sẽ là chiều rộng của nút "Xong" vv. Nếu tôi cố gắng thêm nó vào navigationItem TitleView nó sẽ hiển thị tất cả các con đường bên phải và vẫn thu nhỏ hơn 3 điều khiển phân đoạn của tôi với văn bản có thể hiển thị.

Tôi sẽ làm cách nào để thêm UISegmentedControl vào trung tâm của UINavigationController kết thúc nội dung bật lên của tôi.

Hy vọng ai đó có thể giúp tôi :) cảm ơn trước.

Trả lời

21

Tại sao bạn cần đặt điều khiển trong thanh tiêu đề cửa sổ bật lên? iPad có nhiều hơn bất động sản màn hình để xem xét đưa nó vào xem dưới đây.

- CHỈNH SỬA -

Tôi đã thử bản thân và nó hoạt động. Đây là thiết lập bộ điều khiển popover mã:

- (IBAction) showPopover: (id) sender 
{ 
    TestController *testController = [[TestController alloc] initWithStyle: UITableViewStylePlain]; 
    UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController: testController]; 
    UIPopoverController *controller = [[UIPopoverController alloc] initWithContentViewController: navController]; 
    [controller presentPopoverFromBarButtonItem: sender permittedArrowDirections: UIPopoverArrowDirectionAny animated: YES]; 
    controller.delegate = self; 
    [testController release]; 
    [navController release]; 
} 

đây là việc thực hiện TestController:

- (id) initWithStyle: (UITableViewStyle) style 
{ 
    if ((self = [super initWithStyle: style])) { 
     UISegmentedControl *ctrl = [[UISegmentedControl alloc] initWithFrame: CGRectZero]; 
     ctrl.segmentedControlStyle = UISegmentedControlStyleBar; 
     [ctrl insertSegmentWithTitle: @"One" atIndex: 0 animated: NO]; 
     [ctrl insertSegmentWithTitle: @"Two" atIndex: 0 animated: NO]; 
     [ctrl insertSegmentWithTitle: @"Three" atIndex: 0 animated: NO]; 
     [ctrl sizeToFit]; 
     // Any of the following produces the expected result: 
     self.navigationItem.titleView = ctrl; 
     //self.navigationItem.leftBarButtonItem = [[[UIBarButtonItem alloc] initWithCustomView: ctrl] autorelease]; 
     [ctrl release]; 
    } 
    return self; 
} 

Dưới đây là kết quả:

alt text alt text

Không có các thủ thuật trong mã của tôi ngoài việc gửi sizeToFit đến điều khiển được phân đoạn. công việc này là dành cho bạn?

+0

Xin chào, ngữ cảnh nằm trong thanh và không có trong nội dung. Cũng giống như nó sẽ không có ý nghĩa nếu Apple đã đặt "tin nhắn tiếp theo, lên/xuống mũi tên" phân khúc kiểm soát trong ứng dụng thư, bên trong email được chọn. Hoặc nếu một bộ điều khiển phân đoạn để sắp xếp danh sách được đặt trong danh sách. – RickiG

+0

Tôi hiểu. Tôi đã chỉnh sửa câu trả lời của mình bằng mã làm việc và ảnh chụp màn hình. Tôi hi vọng cái này giúp được. – Costique

+0

Cảm ơn bạn :) Điều đó thật tuyệt, đó là lời gọi tới sizeToFit tạo nên sự khác biệt. Cám ơn bạn một lần nữa. – RickiG

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