![](/img/trans.png)
[英]iPhone 6 Plus UISplitViewController crash with recursive _canBecomeDeepestUnambiguousResponder
[英]UISplitViewController: Crash on rotating on iPhone 6 Plus
我在iOS 8上使用UISplitViewController時遇到問題。
特別是在旋轉屏幕時崩潰,這只發生在iPhone 6 Plus上。 我假設它發生在控制器試圖拆分/合並視圖控制器時。
我的導航堆棧可能有點復雜,拆分視圖的左側和右側都有一個UINavigationController。 在切換到正確的堆棧之前,可以在左堆棧上推送幾個項目。 它與默認的郵件應用程序非常相似。 在您選擇郵箱的位置,打開文件夾並瀏覽左側堆棧中的郵件列表,並在右側堆棧上顯示郵件和打開附件等。
通過使用Show (eg Push)
推動左側堆棧和Show Detail (eg Replace)
我能夠配置和連接不同視圖如何使用除了storyboard配置之外的任何操作。
點擊周圍(並填充正確的堆棧)后,在iphone 6 plus上旋轉將使應用程序崩潰。 我意識到這是因為這是唯一一個擴展和折疊雙方的設備。 調試器沒有給出真實的信息,我有時得到的只是:
-[UIView updateNavigationBarButtonsAnimated:]: unrecognized selector sent to instance
注意它在哪里說UIView
,這似乎是隨機的(NFCString,NSArray等),所以我認為它意外地為零並且指向堆上的隨機代碼。
我也意識到這與UISplitViewControllerDelegate
方法有關,但我無法弄清楚我應該做些什么來使它工作。
我遇到過同樣的問題。
我的崩潰是由於在UISplitViewController的子類中的viewDidLoad中設置leftBarButtonItem引起的。 我刪除了這兩行代碼。
let navigationController = self.viewControllers[self.viewControllers.count-1] as! UINavigationController
navigationController.topViewController.navigationItem.leftBarButtonItem = displayModeButtonItem()
現在我在prepareForSegue中設置leftBarButtonItem。 這就是Apple在Master / Detail示例中的表現方式;-)
“我也意識到這與UISplitViewControllerDelegate方法有關,但我無法弄清楚我應該做些什么來使其工作。”
你是對的。 我有同樣的問題並解決此問題:
- (void)viewWillDisappear:(BOOL)animated {
[super viewWillDisappear:animated];
if (self.isMovingFromParentViewController) {
// To avoid deallocated problem with SplitVC delegates
self.splitViewController.delegate = nil;
// Do your stuff here
}
}
換句話說,當屏幕消失時,必須將splitViewController的委托賦值為nil。
我希望這可以幫助你。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.