ユーザーがログインしていない場合に起動する初期ビューコントローラーであるタブバーコントローラーPFLoginViewController
があります。ログイン/サインアップフローは正常に機能します。
2 つのタブは、1. aUICollectionView
と呼びますIntroVC
。2. aUITableView
と呼びます。FeedVC
ユーザーが で写真をクリックすると、技術的にタブではない3 番目の画面 ( ) をIntroVC
表示する Show segue が ( 経由で) トリガーされます。これからはこれを と呼びます。prepareForSegue
UIView
SelectVC
注: これらの画面はすべて、Navigation Controller にも埋め込まれています。
はSelectVC
写真を表示UIButton
し、ユーザが押して Show segue と Unwind segue をトリガーし、イメージを にプッシュできる がありFeedVC
ます。Unwind セグエを作成した理由は、それがないと、画像がFeedVC
(2 番目のタブ) に押し込まれますが、最初のタブは引き続き強調表示されるためです。
Unwind セグエでこれを修正しましたが、選択後に最初のタブ (Intro VC) を押すと、ナビゲーション バーに [戻る] ボタンが表示され、SelectVC
ボタンを押す回数が増えるという問題があることに気付きました。で戻るボタンを押さなければならない回数が増えIntroVC
ます。これを修正する方法について非常に混乱しています。フローを適切に接続していないようで、IntroVC
複数回生成されているようです。
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)
})
}
}
これが奇妙に構成されていることは承知しています。完全に理解するために必要な情報が不足している場合は、お知らせください。適宜編集します。