【发布时间】:2015-07-03 12:47:16
【问题描述】:
我有一个选项卡栏控制器,它是初始视图控制器,它还有一个PFLoginViewController,如果用户未登录,它会弹出。登录/注册流程工作正常。
这两个标签是
1. UICollectionView 从现在开始我将其称为IntroVC
2. 一个UITableView,我将其称为FeedVC
当用户点击IntroVC 中的照片时,会触发显示转场(通过prepareForSegue),显示第三个屏幕(UIView),这在技术上不是标签。从现在开始,我将把它称为SelectVC。
注意:所有这些屏幕也嵌入(ded)在导航控制器中。
SelectVC 显示一张照片,用户可以按下一个UIButton,触发 Show segue 和 Unwind segue,将图像推送到FeedVC。我创建 Unwind segue 的原因是因为没有它,图像会推入FeedVC(第二个选项卡),但第一个选项卡仍会突出显示。
我用 Unwind segue 解决了这个问题,但我注意到我在选择后遇到问题,当我按下第一个选项卡(Intro VC)时,导航栏有一个返回按钮,而且我使用的次数越多SelectVC 按钮推送图像,我必须在IntroVC 中按返回的次数越多。我对如何解决这个问题感到非常困惑。很明显,我没有正确连接流程,似乎IntroVC 正在生成多次?
当我在模拟器中通过 segues 时,我在控制台中收到以下消息:
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)
})
}
}
我知道这是一个奇怪的结构,如果我缺少完全理解所需的信息 - 请告诉我,我会相应地进行编辑。
【问题讨论】:
标签: ios uitabbarcontroller segue uistoryboardsegue unwind-segue