2013-03-04 75 views
0

我在iPad上爲image picker創建了一個彈出窗口。此功能起作用。但是,如果您按兩次UIBarButton,則應用程序崩潰。iPad iOS 6.1 UIPopover ImagePicker在按兩次條形按鈕時崩潰

@property (retain) UIPopoverController *popoverController1; 


-(IBAction)photos:(id)sender { 

    test = false; 

    UIImagePickerController *imagePicker = [[UIImagePickerController alloc] init]; 
    imagePicker.wantsFullScreenLayout = NO; 
    imagePicker.delegate = self; 
    imagePicker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary; 
    imagePicker.allowsEditing = YES; 

    self.popoverController1 = [[UIPopoverController alloc] initWithContentViewController:imagePicker]; 

    _popoverController1.delegate = self; 

    [_popoverController1 setPopoverContentSize:CGSizeMake(1024, 500)]; 
    [self.popoverController1 presentPopoverFromBarButtonItem:sender permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES]; 
} 

您有什麼建議嗎?

+0

什麼是崩潰的錯誤? – rmaddy 2013-03-04 23:38:55

+0

正確的做法是檢查點擊按鈕時是否顯示彈出窗口。如果是這樣,請關閉當前的彈出窗口。如果不是,則顯示彈出窗口。 – rmaddy 2013-03-04 23:39:51

+0

這是錯誤:終止應用程序,由於未捕獲的異常'NSGenericException',原因:' - [UIPopoverController dealloc]達到popover仍然可見。' 這是一個很好的建議。謝謝! :D我該如何檢查? – 2013-03-04 23:47:24

回答

2

您可能需要檢查彈出窗口是否可見。如果您有它的對象創建,解散並重新創建酥料餅

if ([self.popoverController isPopoverVisible]) { 
    [self.popoverController dismissPopoverAnimated:YES]; 
    [popoverController setDelegate:nil]; 
    [popoverController release]; // Use release only if , it is without ARC 
} 
else 
{ 
    // Create popover and assign its properties. 
} 

這肯定會解決所有的iOS版本的問題。 :)有一個快樂的編碼。