Giu*_*ori 4 uitableview ios swift uisearchcontroller swift2
我用a UISearchController和a 做了一个视图控制器UITableView.您可以从搜索范围按钮中选择两种不同类型的搜索:组和人员.两种搜索都可以在桌面上显示并显示结果.但是,如果单击每个单元格,则应将它们定向到不同的动态页面(动态组页面或动态人员配置文件页面).用于组的工作,而用于配置文件的工作则不工作.这意味着每当我从我得到的结果中点击一个人单元格时,没有任何反应,我在控制台上打印出以下警告:
Warning: Attempt to present <MyProject.profileView: 0x13e9df000> on <MyProject.SearchPage: 0x142a1d8f0> which is already presenting <UISearchController: 0x142a1f7c0>
Run Code Online (Sandbox Code Playgroud)
如果您知道为什么会发生这种情况,如果您能告诉我,我们将非常感激.
编辑:这是应该将单元格链接到不同视图控制器的功能:
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
if self.searchForGroups {
let detailCell:PFObject = self.filteredGroups.objectAtIndex(indexPath.row) as! PFObject
let vc = self.storyboard!.instantiateViewControllerWithIdentifier("DynamicCellView") as! DynamicCellView
vc.GroupId = detailCell.objectId!
self.presentViewController(vc, animated: false, completion: nil)
}else{
//Link to use profile
let user = self.peopleResults[indexPath.row]
let vc = self.storyboard!.instantiateViewControllerWithIdentifier("ProfileView") as! profileView
vc.profileId = user.objectId!
self.presentViewController(vc, animated: true, completion: nil)
}
}
Run Code Online (Sandbox Code Playgroud)
Fid*_*del 10
我有同样的警告,这为我修好了.您需要停止显示搜索控制器,以便在离开视图时显示其他控制器.
override func viewDidDisappear(_ animated: Bool) {
if SearchController.isActive == true {
SearchController.isActive = false
}
}
Run Code Online (Sandbox Code Playgroud)
我正在想出同样的原始问题,但没有一个能解决它.
其实你只需要解雇的UISearchController,因为它是说,因为它已经被提交到当前视图.
因此,当您想要启动操作时,您只需要调用此方法:
if searchController.isActive {
self.searchController.dismiss(animated: false) {
// Do what you want here like perform segue or present
}
}
Run Code Online (Sandbox Code Playgroud)
希望这会有所帮助!
没有代码很难帮助您。发生该错误可能是因为您破坏了视图控制器层次结构。
该消息表明您涉及 3 个视图控制器:
SearchPage is presenting UISearchController
profileView is not yet presented but should be presented on UISearchController or should replace it (For that UISearchController should be dismissed first)
Run Code Online (Sandbox Code Playgroud)
请记住,一个视图控制器一次只能呈现 1 个视图控制器,但它可以有多个子视图控制器(例如导航控制器)。
正如注释一样,以大写字母开头类名(“ProfileView”而不是“profileView”)是一种很好的编码习惯
| 归档时间: |
|
| 查看次数: |
6642 次 |
| 最近记录: |