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