2016-03-21 38 views
0

我有一個可搜索的tableview控制器(使用UISearchController和NSFetchedResultsController)列出項目的行。UISearchController - 警告:嘗試從視圖控制器,而正在演示或解僱正在進行中

它有用戶點擊一行來選擇項目,該項目調用一個展開到上一個tableview。

當用戶點擊某一行時,我希望所選的FetchedResultsController對象被髮送回原始的tableview控制器,並填充原始tableview中的一個字段並關閉當前的可搜索tableview控制器。

當我點擊一行選擇項目沒有搜索,它工作正常,沒有任何警告。

然而,當我搜索表,然後從我提出以下警告經過濾項選擇:

警告:嘗試從視圖控制器駁回,而演示或解僱是進展!

unwind segue從故事板中的tableview單元連線到同一個tableview控制器上的「Exit」圖標。下面是開卷SEGUE代碼:

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject!) { 
    if segue.identifier == "myUnwindSegue" { 

     let indexPath = tableView.indexPathForSelectedRow 
     selectedAirfield = frc.objectAtIndexPath(indexPath!) as? Airfields 
     self.navigationController?.popViewControllerAnimated(true) 

    } 
} 

我也曾嘗試:

if !self.isBeingDismissed() { 
    self.navigationController?.popViewControllerAnimated(true) 
} 

但是,這使我有同樣的警告如上。

我也曾嘗試:

self.dismissViewControllerAnimated(true, completion: nil) 

但這只是讓我回到當前的tableview並不讓我回到以前的tableview控制器和給了我以下警告:

popToViewController :過渡:在現有轉換或演示發生時調用;導航堆棧將不會更新。

我也嘗試禁用segue上的動畫到可搜索的tableview控制器,但這沒有效果。

我也曾嘗試把:

self.searchController?.loadViewIfNeeded() 
在viewDidLoad中

,也試過:

deinit{ 
    if let superView = resultSearchController.view.superview { 
     superView.removeFromSuperview() 
    } 
} 

這兩種都沒有解決問題。

重申,只有在選擇未過濾的tableview行時選擇搜索結果並完美工作時纔會發生。

我在Xcode 7.2.1上。

任何幫助表示讚賞。

回答

0

好的,我發現這個問題,它可能會幫助別人。

我曾在didSelectRowAtIndexPath方法方法如下:

self.resultSearchController.active = false 

所以,我被選擇行解僱的觀點,我試圖關閉這顯然涉及動畫/演示的UISearchController

通過刪除此行,警告已停止。

0

您正在嘗試同時推送和彈出相同的ViewController。選擇項目時你想做什麼?

+0

當用戶點擊某一行時,我希望所選的FetchedResultsController對象被髮送回原始的tableview控制器,並在原始tableview中填充一個字段並關閉當前可搜索的tableview控制器。 –

相關問題