的iOS UISearchController坠毁:应用程序试图在自身呈现模态视图控制器

问题描述 投票:7回答:2

据crashlytics下列崩溃发生(很少)。

应用程序尝试在自身呈现模态视图控制器。呈现控制器。

我不能在所有复制这个问题。这是怎么设置我UISearch控制器。

    self.searchController = [[UISearchController alloc] initWithSearchResultsController:nil];
    self.searchController.dimsBackgroundDuringPresentation = NO;
    self.searchController.searchBar.delegate = self;

    self.tableView.tableHeaderView = self.searchController.searchBar;
    self.definesPresentationContext = YES;

因为我所有的想法任何帮助表示赞赏。如果需要的话,我会发布更多的代码。

ios objective-c uisearchcontroller
2个回答
17
投票

我有这样的问题,当我更新到iOS 11.我的情况是,我有一个文本框,当用户开始编辑,搜索视图,本质上是一个搜索栏作为标题的tableview弹出,并一次的tableview细胞被窃听它应该关闭。

这个问题似乎是,因为iOS的11,OS尝试恢复firstResponder状态。长话短说。

它帮助我添加的活性= NO,我没有选择的方法,像这样

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
   self.searchController.active = NO; // Add this !
   ...

   [self dismissViewControllerAnimated:YES completion:nil];
}

1
投票

如果你和我一样,需要searchController保持活跃,同时提出模态另一个控制器,然后执行以下操作来获得模态呈现没有这么直接做的同样的效果:

快速注:并非所有与obj-C非常熟悉,给在该答案,但这里的斯威夫特答案4.有人随意编辑和添加必要的OBJ-C,但我认为这是在这里清楚如何解决这个问题,在 - 手,即使是在斯威夫特。

比方说,我有我想弹出一个菜单:

let info = the info you need to pass
let currVC = self.getTopMostViewController()
let menuVC = currVC.storyboard?.instantiateViewController(withIdentifier: "myStringIdentifierSetInStoryboard") as? EventMenuViewController
guard menuVC != nil else { return }
menuVC!.info = info // Pass info necessary (i.e. what you would normally pass in prepare(for segue: ...). menuVC.info is a global variable from your class
currVC.present(menuVC!, animated: true, completion: nil)

getTopMostViewController执行()可以变化。矿低于并从here调整。

func getTopMostViewController() -> UIViewController {
    let anyVC = UIViewController()
    if var topController = UIApplication.shared.keyWindow?.rootViewController {
        while let presentedViewController = topController.presentedViewController {
            topController = presentedViewController
        }
        return topController
    }
    return anyVC
}

希望这可以帮助!这不会给你的iOS 12和斯威夫特4描述的错误,虽然我没有尝试与主动搜索控制器,这是什么导致我在这里提出模态时拿到确切的错误。

© www.soinside.com 2019 - 2024. All rights reserved.