Jak segue z danych z jednego do innego Tab Tab poprawnie
Mam Tab Bar kontroler, który jest początkową View Controller, który również ma PFLoginViewController
że PUP w górę, jeśli użytkownik nie jest zalogowany. Proces logowania/rejestracji działa dobrze.
Obie karty są 1. UICollectionView
które będę nazywać IntroVC
odtąd 2. a UITableView
które będę nazywać FeedVC
Gdy użytkownik kliknie zdjęcie w IntroVC
, pokazu przełączenie jest wyzwalane (przez prepareForSegue
), które pokazuje trzeci ekran (UIView
), który technicznie nie jest zakładką. Odsyłam to teraz jako SelectVC
.
UWAGA: Wszystkie te ekrany są również osadzone (ded) w kontrolerze nawigacyjnym.
W SelectVC
wyświetla zdjęcia, a tam jest UIButton
że użytkownik może nacisnąć który wyzwala Pokaż segue i odpoczynek segue, aby przesunąć obraz do FeedVC
. Powód, dla którego utworzyłem sekcję Odwilż, polega na tym, że bez niej obraz przesunąłby się do FeedVC
(druga zakładka), ale pierwsza zakładka byłaby podświetlona.
Naprawiłem to przy odpinaniu z Unwind, ale zauważyłem, że mam problem z tym, że po selekcji, po naciśnięciu pierwszej zakładki (Intro VC) pasek nawigacji ma przycisk Wstecz i im więcej razy go używam przycisk SelectVC
do przesyłania zdjęć, tym więcej razy muszę nacisnąć Wróć w numerze IntroVC
. Jestem bardzo zdezorientowany, jak to naprawić. Jest oczywiste, że nie podłączam poprawnie przepływu i wydaje się, że IntroVC
jest generowany wiele razy?
pojawia się następujący komunikat w konsoli kiedy przejść przez segues w symulatorze:
Nested pop animation can result in corrupted navigation bar
Finishing up a navigation transition in an unexpected state. Navigation Bar subview tree might get corrupted.
Każda pomoc będzie bardzo mile widziane!
Odpowiedni kod poniżej.
IntroVC.swift
@IBAction func unwindToIntroView(segue: UIStoryboardSegue) {
self.tabBarController!.selectedIndex = 1
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if segue.identifier == "showFeedItem" {
let selectScreenVC = segue.destinationViewController as! SelectScreenViewController
let cell = sender as! UICollectionViewCell
if let indexPath = self.collectionView!.indexPathForCell(cell) {
self.navigationController?.popViewControllerAnimated(true)
selectScreenVC.currentVenue = venueItems[indexPath.row]
}
}
SelectVC.swift
@IBAction func pushSelection(sender: UIButton) {
var feedItem = FeedItem()
if let currentItem = currentItem {
feedItem.nName = currentItem.nName
feedItem.imageFile = currentItem.lgImg
feedItem.userName = PFUser.currentUser()!.username!
feedItem.saveInBackgroundWithBlock({ (success: Bool, error: NSError?) -> Void in
self.performSegueWithIdentifier("unwindToVenueView", sender: self)
})
}
}
Wiem, że to dziwnie zorganizowany, a jeśli brakuje mi informacji, które są potrzebne, aby w pełni zrozumieć - proszę dać mi znać i Odpowiednio edytuję.
hej @flizana, próbowałem twojej sugestii, ale to niestety nie zadziałało. Dzięki za próbę pomocy! – SamYoungNY
Czy próbowałeś wprowadzać punkty przerwania w każdej wywołanej metodzie, aby sprawdzić, która linia rzuca wyjątek? – flizana