Come Segue con i dati da una scheda all'altra Tab correttamente
Ho un Tab Bar controller che è la View Controller iniziale, che ha anche una PFLoginViewController
che i cuccioli fino se un utente non è connesso. Il flusso di accesso/registrazione funziona correttamente.
Le due schede sono 1. un UICollectionView
cui mi riferirò come IntroVC
da ora in poi 2. un UITableView
cui mi riferirò come FeedVC
Quando un utente fa clic una foto in IntroVC
, uno spettacolo segue viene attivato (tramite prepareForSegue
) che mostra un terzo schermo (UIView
) che tecnicamente non è una scheda. Mi riferirò a questo come il SelectVC
d'ora in poi.
NOTA: tutte queste schermate sono anche Incorpora (ded) in un controller di navigazione.
Le SelectVC
mostra una foto, e c'è un UIButton
che l'utente può premere che innesca uno spettacolo segue e distendersi segue, a spingere l'immagine nel FeedVC
. Il motivo per cui ho creato un seguito di Unwind è perché senza di esso l'immagine si sposterà nello FeedVC
(seconda scheda) ma la prima scheda verrebbe comunque evidenziata.
Ho risolto questo problema con Unwind seguito, ma ho notato che ho un problema in cui dopo una selezione, quando premo la prima scheda (Intro VC) la barra di navigazione ha un pulsante Indietro, e più volte uso il pulsante SelectVC
per spingere le immagini, più volte devo premere Indietro nello IntroVC
. Sono molto confuso su come risolvere questo problema. È evidente che non sto collegando correttamente il flusso e sembra che lo IntroVC
venga generato più volte?
ottengo il seguente messaggio nella console quando vado attraverso le segues in Simulator:
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.
Qualsiasi aiuto sarebbe molto apprezzato!
Codice rilevante in basso.
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)
})
}
}
So che questo è stranamente strutturata, e se mi manca le informazioni che è necessario per comprendere appieno - per favore fatemelo sapere e Modificherò di conseguenza.
hey @flizana, ho provato il tuo suggerimento ma questo non ha funzionato purtroppo. Grazie per aver cercato di aiutare! – SamYoungNY
Hai provato a inserire i punti di interruzione in ogni metodo chiamato per verificare quale riga sta generando l'eccezione? – flizana