7

検索バーとテーブルビューを備えたモーダル ビュー コントローラーがあります。基本的には、ポップオーバー セグエを使用して表示されるポップオーバー検索ボックスです。上部には、キャンセル ボタンのある UISearchBar があります。その検索バーのキャンセル ボタンを使用してビュー コントローラーを閉じようとしています。

かなりの数のアプローチを試しました...

-(void) searchBarCancelButtonClicked:(UISearchBar *)searchBar
{
    [self dismissViewControllerAnimated:YES completion:nil];
}

[self.presentingViewController dismissViewControllerAnimated:YES completion:nil];

の行に沿ってメソッドをデリゲートします

[self.delegate dismissModalViewController:self]

-(void) dismissModalViewController:(UIViewController*) viewToDismiss
{
    [viewToDismiss dismissViewControllerAnimated:YES completion:nil];
}

UISearchBar が干渉しているかどうかはわかりませんが、妥当な仮説のように思えました。それ以外の場合、これは一般的なトピックであり、以前に回答された可能性のある質問をしたことをお詫びしますが、FMを読んで、青くなるまでグーグルで検索しましたが、まだ結果はありません.

4

2 に答える 2

16

UISearchController を使用してテーブルビューをフィルタリングする UIPopoverPresentationController で同じことを経験しました。

問題は、dismissViewController を初めて呼び出すと、UISearchController が閉じられますが、UI には影響がないため、何も起こらなかったと考えがちです。あなたが言及したように、これは干渉するUISearchBarです。

解決策は、 dismissViewControllerを 2 回呼び出すか (私はこれが好きではありません)、searchController.dismissViewController に続いて self.dismissViewController を呼び出すことです。

Swift 3の例...

if searchController.isActive {
    searchController.dismiss(animated: true, completion: { 
        self.dismiss(animated: true) 
    })
} else {
    dismiss(animated: true)
}
于 2016-02-16T15:59:56.203 に答える