ios – 如何正确地从一个Tab到另一个Tab的数据

前端之家收集整理的这篇文章主要介绍了ios – 如何正确地从一个Tab到另一个Tab的数据前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个Tab Bar控制器,它是初始视图控制器,它还有一个PFLoginViewController,如果用户没有登录,则该控制器会弹起.登录/注册流程正常.

两个标签
一个UICollectionView,我将从现在开始引用为IntroVC
2.一个UITableView,我将其称为FeedVC

用户在IntroVC中单击照片时,会触发Show segue(通过prepareForSegue)显示第三个屏幕(UIView),这在技术上不是一个选项卡.我将从现在开始将其称为SelectVC.

注意:所有这些屏幕也是在导航控制器中嵌入(ded).

SelectVC显示一张照片,并且有一个UIButton,用户可以按它触发一个Show segue和Unwind segue,将图像推送到FeedVC.我创建一个“放卷”的原因是因为没有它,图像将进入FeedVC(第二个选项卡),但是第一个选项卡仍然会被突出显示.

解决了这个Unwind segue,但我注意到我有一个问题,在选择之后,当我按第一个选项卡(简介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]
        }
}

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)
        })
    }
}

我知道这是奇怪的结构,如果我缺少需要充分理解的信息 – 请让我知道,我会相应地进行编辑.谢谢.

解决方法

我想你的问题出现在这行(prepareForSegue方法)
self.navigationController?.popViewControllerAnimated(true)

因为您在呈现SelectVC之前尝试从堆叠中弹出视图控制器.这可能是导致可能损坏的导航栏的原因(如果您弹出根视图控制器怎么办?).您可以尝试以下方法

self.navigationController?.popToRootViewControllerAnimated(true)
原文链接:https://www.f2er.com/iOS/330292.html

猜你在找的iOS相关文章