据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 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];
}
如果你和我一样,需要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描述的错误,虽然我没有尝试与主动搜索控制器,这是什么导致我在这里提出模态时拿到确切的错误。