2011-02-09 32 views
9

Làm cách nào để "thực hiện bộ chọn" cho parentviewcontroller của uipopovercontroller? Tôi có uipopovercontroller lanuched từ uiviewcontroller, và uipopovercontroller này bao gồm uiviewcontroller khác. Tôi dường như không thể truy cập bộ điều khiển chế độ xem gốc từ cửa sổ bật lên hoặc bộ điều khiển chế độ xem "bên trong".Phụ huynh UIPopovercontroller?

Tôi hy vọng tôi là rõ ràng ...

BTW - parentViewcontroller không hoạt động ...

Cảm ơn!

Trả lời

8

Không có cách nào để thực hiện việc này trực tiếp với UIPopoverController. Bạn sẽ phải lẽ vượt qua một tham chiếu đến điều khiển xem cha mẹ của bạn với bộ điều khiển xem bạn đang quản lý với một bộ điều khiển popover:

// Assumes these calls are made from within a view controller and that 
// MyViewController has a property called previousViewController 

MyViewController * myViewController = [[[MyViewController alloc] init] autorelease]; 
myViewController.previousViewController = self; 
UIPopoverController * popoverController = [[[UIPopoverController alloc] 
    initWithContentViewController:myViewController] autorelease]; 

UIBarButtonItem * rightBarButtonItem = self.navigationItem.rightBarButtonItem; 
[popoverController presentPopoverFromBarButtonItem:rightBarButtonItem 
          permittedArrowDirections:UIPopoverArrowDirectionDown 
              animated:YES]; 

Something như vậy, nhưng điểm quan trọng là điều khiển xem của bạn (được quản lý bởi bộ điều khiển cửa sổ bật lên) phải lấy tham chiếu đến bộ điều khiển chế độ xem gốc của bạn trước khi bạn trình bày cửa sổ bật lên.

+0

Thats chính xác những gì tôi nghĩ. Nếu đó là cách duy nhất, tôi sẽ làm điều đó. Cảm ơn! –

+0

@AviTsadok Bạn có thể sử dụng popoverController.delegate – itsji10dra

0

Bạn có thể sử dụng phương thức riêng để có bộ điều khiển bật lên gốc từ trình điều khiển chế độ xem.

UIPopoverController *popopverController = [self performSelector:@selector(_popoverController)]; 
[popopverController dismissPopoverAnimated:YES]; 
Các vấn đề liên quan