2012-01-19 28 views
15

Tôi có một bộ điều khiển chế độ xem chính để xử lý bản vẽ cho chế độ xem 2D opengl ES của tôi và nút điều khiển trình quản lý con cái để xác định các nút cần tải và vẽ trong khi khởi chạy.làm cách nào tôi có thể truy cập chế độ xem của trình điều khiển chế độ xem của cha mẹ từ trình điều khiển chế độ xem con?

Khi người dùng nhấn vào một trong các nút này, bộ điều khiển chế độ xem này được tạo và chế độ xem của nó được cho là sẽ xuất hiện nhưng chế độ xem không bao giờ được thêm nhưng đã được thử nghiệm để hoạt động. Heres mã của tôi từ bộ điều khiển giao diện chính:

buttonManager=[[ButtonManager alloc] init]; 
[self addChildViewController:buttonManager]; 
[self.view addSubview:buttonManager.view]; 

và heres mã của tôi để khởi động quan điểm này:

-(void)launchStopDialog: (NSString*)stopName { 
    NSLog(@"stopdialog should be launched."); 
    if (stopDialogController == nil) 
     stopDialogController = [[StopDialogController alloc] initWithNibName:@"StopDialog" bundle:nil]; 
    if (stopDialogController) 
     [stopDialogController presentWithSuperview:self.view.superview withStopName:stopName]; 
} 

Trả lời

38

Để truy cập phụ huynh Xem điều khiển bạn có thể sử dụng self.parentViewController. Một khi bạn có nó, bạn có thể truy cập vào quan điểm của mình chỉ đơn giản bằng cách sử dụng tài sản view

+4

Trong Swift 3.0 sử dụng 'self.parent' " Yeah! Swift 3.0,% $ ^%! " (c) Breaking Bad –

+0

@aqs: tại sao self.parent * nil * trong ViewDidLoad? – Kashif

+0

@Kashif, chỉ cần kiểm tra câu trả lời tiếp theo. –

23

Lưu ý đến những người sử dụng iOS 5.x +

self parentViewController bây giờ trở về nil. Bây giờ bạn sẽ phải sử dụng self presentingViewController để đạt được kết quả tương tự. Xem bài viết trên blog này để biết thêm thông tin và ở quanh công việc bổ sung để nâng cấp cơ sở mã của bạn: http://omegadelta.net/2011/11/04/oh-my-god-they-killed-parentviewcontroller/

+1

liên kết bị hỏng .. – user431791

+0

Liên kết không bị hỏng cho tôi. –

3

đó là những gì làm việc cho tôi

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { 
    NSString * segueName = segue.identifier; 
    if ([segueName isEqualToString: @"child-view"]) { 
     ChildViewController * childViewController = (ChildViewController *) [segue destinationViewController]; 
     [self addChildViewController:childViewController]; 

    } 
} 
1

Bây giờ sau khi họ đã giết chết

self.parent 

bạn có thể sử dụng

override func didMove(toParentViewController parent: UIViewController?) 
{   
} 
Các vấn đề liên quan