Как с данными непосредственно перейти из одной вкладки на другую вкладку правильно
У меня есть контроллер Tab Bar, который является Initial View Controller, который также имеет PFLoginViewController
что ПУПС, если пользователь не вошел в систему. Поток входа/регистрации работает нормально.
две вкладки 1. UICollectionView
, которые я буду ссылаться как IntroVC
теперь 2. а UITableView
, которые я буду ссылаться как FeedVC
Когда пользователь нажимает фотографию в IntroVC
, шоу segue запускается (через prepareForSegue
), который показывает третий экран (UIView
), который технически не является вкладкой. С этого момента я буду ссылаться на это как SelectVC
.
ПРИМЕЧАНИЕ. Все эти экраны также вставляются (деблокированы) в навигационном контроллере.
В SelectVC
отображает фото, и есть UIButton
, что пользователь может нажать кнопку, которая запускает шоу SEGUE и Расслабиться SEGUE, нажать изображение в FeedVC
. Причина, по которой я создал Unwind segue, состоит в том, что без нее изображение будет нажимать на FeedVC
(вторая вкладка), но первая вкладка будет выделена.
Я установил это с помощью Unwind segue, но я заметил, что у меня проблема, когда после выбора, когда я нажимаю 1-ю вкладку (Intro VC), панель Nav имеет кнопку «Назад», и чем больше раз я использую кнопку SelectVC
, чтобы нажимать изображения, чем больше раз я должен нажать Назад в IntroVC
. Я очень смущен тем, как это исправить. Очевидно, что я не правильно подключаю поток, и кажется, что IntroVC
генерируется несколько раз?
я получаю следующее сообщение в консоли, когда я иду через перетекает в симуляторе:
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.
Любая помощь будет принята с благодарностью!
Соответствующий код ниже.
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)
})
}
}
Я знаю, что это причудливо структурирован, и если я пропускаю информацию, которая необходима для полного понимания - пожалуйста, дайте мне знать, и Я отредактирую соответственно.
hey @flizana, я попробовал ваше предложение, но это не сработало. Спасибо, что пытались помочь! – SamYoungNY
Вы пытались поставить точки останова в каждом методе, который вызывается, чтобы проверить, какая строка выбрасывает исключение? – flizana