Warnung: Versuch View-Controller * die bereits presenting <UISearchController: 0x142a1f7c0>
Machte ich einen view-controller mit einem UISearchController
und ein UITableView
. Es gibt zwei verschiedene Art der Suche können Sie den Suchbereich Tasten : Gruppen und Menschen. Beide suchen Arbeit und zeigen Ergebnisse auf dem Tisch. Jedoch, wenn Sie klicken Sie auf jede Zelle, die Sie, sollten Sie direkt zu verschiedenen dynamischen Seiten (eine dynamische Gruppe Seite oder eine dynamische person, die Profil-Seite). Die eine für Gruppen arbeiten, während die für die profile nicht. Bedeutung immer, wenn ich Sie auf die eine person, die Zelle aus den Ergebnissen, die ich habe, passiert nichts und ich bekomme folgende Warnung auf der Konsole ausgegeben :
Warning: Attempt to present <MyProject.profileView: 0x13e9df000> on <MyProject.SearchPage: 0x142a1d8f0> which is already presenting <UISearchController: 0x142a1f7c0>
Wenn Sie eine Idee haben, warum dies geschehen könnte, es wäre wirklich schön, wenn Sie lassen Sie mich wissen.
EDIT : Hier die Funktion, die verlinkt werden soll die Zelle der verschiedenen view-Controller :
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)
}
}
- Vielleicht haben Sie es über UISearchController. selbst.searchController presentViewController...?
- Ich habe gerade aktualisiert die Frage mit dem code der Funktion, die links die Zellen zu den view-Controllern.
- Ich glaube nicht, dass ich völlig verstanden, was du meinst. Könnten Sie das erklären? Danke für die Antwort.
- Haben Sie versucht, ein übergang statt von der Instanzierung der view controller? Sie können call 'performSegueWithIdentifier("segueID")'
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich hatte die gleichen warn-und dieses fest für mich. Sie müssen aufhören, die Präsentation der such-controller, so können Sie derzeit andere controller, während Sie verlassen die Ansicht.
Ich war dabei das gleiche ursprüngliche Problem und keines von diesen gelöst für mich.
Eigentlich müssen Sie nur entlassen die UISearchController, wie es ist sagte, weil es bereits präsentiert, um die aktuelle Ansicht.
Also, wenn Sie wollen, starten Sie Ihre Aktion, Sie müssen nur rufen Sie diese :
Hoffe, das wird helfen!
Ohne den code ist schwierig, Ihnen zu helfen. Die Fehler die passiert werden kann, da brechen Sie den view-controller Hierarchie.
Die Nachricht ist zu sagen, dass Sie 3 view-Controller beteiligt:
Nehmen Sie daran, dass ein view-controller kann nur 1 view controller an der Zeit, aber es kann mehrere child-view-Controller (wie zum Beispiel eine Navigations-controller).
Weitere Informationen, die Sie prüfen können: https://developer.apple.com/library/ios/featuredarticles/ViewControllerPGforiPhoneOS/TheViewControllerHierarchy.html#//apple_ref/doc/uid/TP40007457-CH33-SW1
Nur als Kommentar, um eine gute Codierung der Praxis beginnen Sie mit Ihrem Klassennamen mit einem Großbuchstaben ('ProfileView' statt 'profileView')
Traf ich die gleiche Fehlermeldung beim Versuch, eine ein segue, wenn Tippen Sie auf ein suchergebnis. Dies ist keine ideale workaround, aber da das searchController bevor die segue es fest für mich:
Ich bin mir nicht sicher, ob die oben genannten Antworten richtig gearbeitet in der früheren version, aber in swift 5, Berufung entlassen wird Ursache der Wechsel zum auslösen richtig, aber die such-Leiste wird aktiv bleiben, und wenn Sie entlassen die ausgelöst segue (kommen zurück, um die Suche-Seite der Suche bar suchen aktive, aber die Ergebnisse nicht.
Auch die Entlassung von viewDidDisappear() funktionierte nicht korrekt. Hier ist, wie ich es Tat.