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