2013-04-26 37 views
7

Tôi có một ứng dụng iPad đơn giản với MasterviewController với một tableview và một DetailViewController chứa một UIWebView. Sau đó, tôi kéo và thả một SplitViewController trong Storyboard của tôi, kết nối nó với bộ điều khiển Master và Detail của tôi. Trong MasterViewController tôi đang sử dụng như sau:UISplitViewController Ẩn/Bỏ ẩn MasterView Trong Storyboard

- (void) awakeFromNib 
{ 
    self.splitViewController.delegate = self; 
} 

- (BOOL) splitViewController:(UISplitViewController *)svc shouldHideViewController:(UIViewController *)vc inOrientation:(UIInterfaceOrientation)orientation 
{ 
    return NO; 
} 

Hôm nay trông giống như sau:

enter image description here

Tất cả mọi thứ đang làm việc tuyệt vời. Điều tôi muốn làm là ẩn và bỏ ẩn MasterViewController bằng một nút ở phía trên bên trái của DetailViewController, giống như ứng dụng iPad Mail.

Tôi đã tìm thấy một số câu hỏi liên quan đến vấn đề này nhưng chúng không tạo ra SplitView đơn giản như tôi bằng cách kéo nó trong bảng phân cảnh và viết vài dòng mã. như thế.

LƯU Ý: Vui lòng không đề nghị sử dụng MGSplitViewController hoặc bất kỳ thư viện bên thứ ba nào khác. Cảm ơn trước.

MasterViewController được nhúng bên trong bộ điều khiển điều hướng. Trong khi DetailViewController có một thanh trên cùng được thêm vào bằng tay bởi vì nó làm mất thanh điều hướng ở trên cùng khi toàn bộ mọi thứ được thêm vào trong SplitView. Những gì tôi biết là tôi có thể tạo ra một nút IBAction trên thanh trên cùng của DetailView nhưng không biết làm thế nào để kích hoạt chức năng ẩn và bỏ ẩn.

Trả lời

4

tôi làm điều đó như thế này trong bộ điều khiển xem tổng thể (TableController):

#import "TableController.h" 
#import "ViewController.h" 

@interface TableController() 

@property (strong, nonatomic) NSArray * theData; 
@property (strong, nonatomic) UIViewController * detailVC; 

@end 

@implementation TableController 


-(void)awakeFromNib { 
    self.splitViewController.delegate = self; 
    self.detailVC = self.splitViewController.viewControllers[1]; 
} 

-(void)splitViewController:(UISplitViewController *)svc willShowViewController:(UIViewController *)aViewController invalidatingBarButtonItem:(UIBarButtonItem *)barButtonItem { 
    NSMutableArray *itemArray = [self.detailVC.toolBar.items mutableCopy]; 
    [itemArray removeObject:barButtonItem]; 
    [self.detailVC.toolBar setItems:itemArray]; 
} 


-(void)splitViewController:(UISplitViewController *)svc willHideViewController:(UIViewController *)aViewController withBarButtonItem:(UIBarButtonItem *)barButtonItem forPopoverController:(UIPopoverController *)pc { 
    barButtonItem.title = @"Master"; 
    NSMutableArray *itemArray = [self.detailVC.toolBar.items mutableCopy]; 
    if (! itemArray) { 
     itemArray = [NSMutableArray arrayWithObject:barButtonItem]; 
    }else{ 
     [itemArray insertObject:barButtonItem atIndex:0]; 
    } 
    [self.detailVC.toolBar setItems:itemArray]; 
} 

Tôi đã thêm một thanh công cụ trong IB với bộ điều khiển chi tiết, và đưa nó trở thành IBOutlet, thanh công cụ.

+0

@ Jessica, Làm thế nào nó không hoạt động? Bạn có gặp lỗi không, hoặc bạn có làm gì không? – rdelmar

+0

@Jessica, Vâng, đây là cách khá chuẩn để thêm hành vi này. Bạn nên làm một số đăng nhập để xem lý do tại sao điều này không hoạt động. Kiểm tra để thấy rằng không có đối tượng nào (self.splitViewController, self.detailVC, self.detailVC.toolBar, v.v.) không phải là không. – rdelmar

+0

@Jessica, tôi thấy một số điều mà bạn đã làm khác với tôi. Bạn đang sử dụng thanh điều hướng thay vì thanh công cụ yêu cầu mã khác. Có lý do nào bạn không muốn sử dụng thanh công cụ không? Thứ hai, bạn nhận xét ra dòng mà tôi xác định detailVC. Khi ứng dụng bắt đầu chi tiếtVC đã tồn tại, bạn không cần phải phân biệt với nó, vì vậy những gì bạn đang làm với điều đó thay thế segue là không đúng. Ngoài ra thực tế là bạn đang trả về NO từ phương thức shouldHideViewController: inOrientation: giữ 2 phương thức đại biểu mà tôi sử dụng để được gọi. Bạn có muốn tổng thể hiển thị theo chiều dọc không? – rdelmar

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