2011-10-28 20 views

Trả lời

9

Trong tập tin header của bộ điều khiển xem Root:

@property (strong, nonatomic) UIStoryboardPopoverSegue* popSegue; 

Trong tập tin thực hiện:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 
{ 
    if([[segue identifier] isEqualToString:@"popover"]) 
    { 
     NSLog(@"%@",[segue destinationViewController]); 
     self.popSegue = (UIStoryboardPopoverSegue*)segue; 

     [[segue destinationViewController] setDelegate:self]; 
    } 
} 

Khi bao giờ bạn muốn ẩn các cửa sổ pop qua:

if ([self.popSegue.popoverController isPopoverVisible]) 
    { 
     [self.popSegue.popoverController dismissPopoverAnimated:YES];   
    } 

Trong xem bảng, thêm một đại biểu và thực hiện các đại biểu trong bộ điều khiển xem gốc. Khi phương thức ủy nhiệm được gọi, sử dụng mã trên để loại bỏ cửa sổ bật lên.

+0

tốt trên ya' để giải quyết câu hỏi hóc búa đó. – CodaFi

9

Cho phép tôi đề xuất một giải pháp hơi khác, bao gồm việc chuyển tham chiếu bộ điều khiển cửa sổ thay vì tham chiếu segue.

Trong tập tin thực thi của bộ điều khiển xem nguồn:

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 
{ 
    if ([[segue destinationViewController] isKindOfClass:[MyDestViewController class]]) { 
     MyDestViewController* viewController = (MyDestViewController*)[segue destinationViewController]; 
     UIStoryboardPopoverSegue* popoverSegue = (UIStoryboardPopoverSegue*)segue; 
     [viewController setPopoverController:[popoverSegue popoverController]]; 
    } 
} 

Trong tập tin tiêu đề của bộ điều khiển xem điểm đến:

@property (weak, nonatomic) UIPopoverController* popoverController; 

Trong tập tin thực thi của bộ điều khiển xem điểm đến:

@synthesize popoverController; 

Cùng một tệp, bất cứ khi nào bạn muốn loại bỏ cửa sổ bật lên:

[popoverController dismissPopoverAnimated:YES]; 
1

Các tài liệu táo khuyên như sau:

Sa thải một popover lập trình đòi hỏi một con trỏ tới bộ điều khiển popover. Cách duy nhất để có được con trỏ như vậy là tự lưu trữ nó, thường là trong bộ điều khiển xem nội dung. Điều này đảm bảo rằng trình điều khiển chế độ xem nội dung có thể loại bỏ cửa sổ bật lên để phản hồi các hành động của người dùng thích hợp.

http://developer.apple.com/library/ios/#documentation/WindowsViews/Conceptual/ViewControllerCatalog/Chapters/Popovers.html

1

trong didSelectRowAtIndexPath thử mã này

[viewController.popoverController dismissPopoverAnimated:YES]; 
Các vấn đề liên quan