簡體   English   中英

UIPopoverPresentation和UIPopover關閉會導致崩潰

[英]UIPopoverPresentation and UIPopover dismissing causes crash

我在應用程序上工作了幾個月,沒有任何彈出窗口問題。 突然之間,今天的彈出窗口已經變得地獄了。

我已經嘗試了幾種不同的方法,無論我是通過按彈出式窗口中的按鈕還是點擊彈出式窗口外的應用程序崩潰來關閉彈出式窗口的。

使用Instruments,我可以看到有一個僵屍引用僅在彈出窗口被消除后才會發生:

*** -[UITransitionView willRemoveSubview:]: message sent to deallocated instance 0x7f9985bcd980

因此,我已經記錄了該堆棧,並且沒有太多幫助,因為整個堆棧與UIKit和內置動畫等有關。

使用標准的UIPopovers

self.popover = [[UIPopoverController alloc] initWithContentViewController:self.navVC];
self.popover.backgroundColor = [UIColor accentColor];
self.popover.delegate =self;
[self.seatingChartPopover presentPopoverFromRect:CGRectMake(x,y, 1, 1)
                                          inView:self.view permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];

或者在ios8中使用新的UIPopoverPresentationController方法

self.navVC.modalPresentationStyle = UIModalPresentationPopover;

UIPopoverPresentationController* popover = self.navVC.popoverPresentationController;
self.navVC.preferredContentSize = [self.childVC preferredContentSize];
popover.sourceView = self.view;
popover.sourceRect = CGRectMake(x,y, 1, 1);
popover.permittedArrowDirections = UIPopoverArrowDirectionAny;
[self presentViewController:self.seatingChartNavController animated:YES completion:nil];

我確保所涉及的所有視圖控制器都有強大的參考。

正如我提到的,我幾個月來都沒有更改顯示此彈出窗口的代碼,並且直到今天一直工作良好。 我已經花了幾個小時調試它,但無濟於事。

另外,如果我只是將self.navVC呈現為普通模式視圖,則該視圖顯示正常,並且關閉。 只有當它設置為彈出窗口時,它才會失敗

在此先感謝您的幫助。

我很ham愧地承認我不小心在我的UIView類別之一中放入了dealloc方法。

我很驚訝,這沒有引起任何編譯器警告,但是在刪除之后,再也沒有奇怪的崩潰了。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM