标签: unwind-segue

在展开segue之后执行push segue

我正在使用相机应用程序,其中相机视图以模态显示.完成裁剪后.我执行一个放松的segue MainPageViewController.(请看截图)

故事板

我的展开功能MainPageViewController如下:

@IBAction func unwindToMainMenu(segue: UIStoryboardSegue) {
    self.performSegueWithIdentifier("Categories", sender: self)
}
Run Code Online (Sandbox Code Playgroud)

其中,"类别"是从推SEGUE标识符MainPageViewControllerCategoriesTableViewController.

程序进入unwindToMainMenu函数但不执行push segue.知道如何解决这个问题吗?

注意:我发现了同样的问题,但答案建议改变故事板结构.

xcode ios swift unwind-segue

34
推荐指数
4
解决办法
5601
查看次数

使用展开segue传递数据

我创建了两个视图控制器.我从第一个到第二个创建了一个segue来传递数据.现在我想将数据从第二个视图控制器传递到第一个视图控制器.我经历了许多类似的问题而我无法实现这些问题,因为我缺乏有关如何解开的知识.

ViewController.swift

class ViewController: UIViewController
{   
    var dataRecieved: String?
    @IBOutlet weak var labelOne: UILabel!
    @IBAction func buttonOne(sender: UIButton)
    {
        performSegueWithIdentifier("viewNext", sender: self)
    }
    override func prepareForSegue(segue: (UIStoryboardSegue!), sender: AnyObject!)
    {

        var svc: viewControllerB = segue.destinationViewController as! viewControllerB
        svc.dataPassed = labelOne.text
    }
}
Run Code Online (Sandbox Code Playgroud)

这会将数据传递给视图控制器"viewControllerB"中的dataPassed.说,现在我想将一些数据从viewControllerB传递到ViewController中的dataRecieved.如何只使用unwind segue而不是使用委托来完成此操作.我对迅捷很新,会很感激详细解释.

ios segue swift unwind-segue

31
推荐指数
2
解决办法
2万
查看次数

在解除segue行动之前该怎么办?

我刚刚想出了什么是一个放松的segue以及如何使用它与这个问题的好答案.非常感谢.

但是,这是一个像这样的问题:

假设在场景B中有一个按钮可以展开到场景A的一个按钮,在它被分割之前我想要做一些事情,比如将数据保存到数据库.我在B.swift中为这个按钮创建了一个动作,但它似乎直接进入了场景A而没有采取指定的动作.

谁知道为什么或如何做到这一点?

谢谢.

ios swift unwind-segue

16
推荐指数
1
解决办法
1万
查看次数

如何正确地将数据从一个Tab转换到另一个Tab

故事板图像

我有一个标签栏控制器,它是初始视图控制器,PFLoginViewController如果用户没有登录,它也有一个小工具.登录/注册流程正常.

这两个标签是1.a UICollectionView,我IntroVC将从现在开始参考2. UITableView我将称之为FeedVC

当用户点击照片时IntroVC,会触发显示segue(通过prepareForSegue),显示第3个屏幕(UIView),这在技术上不是标签.我SelectVC将从现在开始称之为.

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

所述SelectVC显示相片,并有一个UIButton,用户可以按下触发一个显示赛格瑞身心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.
Run Code Online (Sandbox Code Playgroud)

任何帮助将不胜感激!

相关代码如下.

IntroVC.swift

@IBAction func unwindToIntroView(segue: UIStoryboardSegue) {
    self.tabBarController!.selectedIndex = 1


override func prepareForSegue(segue: …
Run Code Online (Sandbox Code Playgroud)

uitabbarcontroller ios segue uistoryboardsegue unwind-segue

12
推荐指数
2
解决办法
1453
查看次数

(Swift)当多个视图控制器导致相同视图时,展开segue?

我正在尝试编写一个刽子手游戏,并且在解开细分时遇到麻烦.我有多个视图控制器,最终导致相同的视图,用户在其中播放实际的刽子手.但是,根据呈现控制器,我希望游戏处于不同的"模式"(即:多人游戏,单人游戏等).我正在尝试添加一个解除前一个视图控制器的游戏按钮,但是当用户可以使用多个路径到达此视图时,我不确定如何展开.

换句话说,我的应用程序有点:

A - > B - > C或

A - > D - > C其中C可以(理想地)展开到D或B.

我想知道实现这个的最佳方法是什么?我应该只将所有视图控制器嵌入导航控制器吗?或者有没有办法根据某种条件呈现某个视图控制器?感谢您的任何帮助!

uiviewcontroller ios segue swift unwind-segue

12
推荐指数
3
解决办法
7073
查看次数

Unwind Segue iOS回归1太多VC

我有一个3视图控制器导航,其中A呈现模态控制器B,它通过segue呈现模态控制器C. C有一个展开SEGUE回到B.它也有一个开卷回答:当我执行对C放松到B,它解开行动,但随后弹出B和追溯到答:这不是我想要的,我想在这种情况下,它留在B.下面是VC C使用的segues.

从VC C中解除segues

unwindCancel用于当用户点击collectionViewCell并返回VC B. prepareForUnwind只是VC A的标准"取消"按钮.

下面是在VC C中调用unwind的didSelectItem的代码.下面是VC C中的prepareForSegue.

-(void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath{
[self performSegueWithIdentifier:@"unwindCancel" sender:self];
}

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{
    if ([segue.identifier isEqualToString:@"unwindCancel"]) {
        GalleryDetailViewController *detailVC = segue.destinationViewController;
        detailVC.colletionCount = self.indexPathToPass;
    }
}
Run Code Online (Sandbox Code Playgroud)

VC B在.m文件中展开

-(IBAction)unwindCancel:(UIStoryboardSegue *)segue{

    [self.collectionView scrollToItemAtIndexPath:self.colletionCount atScrollPosition:UICollectionViewScrollPositionLeft animated:YES];
}
Run Code Online (Sandbox Code Playgroud)

VC在.m文件中展开

-(IBAction)prepareForUnwind:(UIStoryboardSegue *)segue {
}
Run Code Online (Sandbox Code Playgroud)

uiviewcontroller ios unwind-segue

11
推荐指数
1
解决办法
288
查看次数

Unwind segue在Swift 3和iOS 10中不起作用

我正在尝试在iOS 10和Swift 3中测试unwind segue.

我做了这样一个简单的应用程序: 在此输入图像描述

在此输入图像描述

我在TableViewController类中添加了segue的代码,并在表视图控制器场景中连接"取消"按钮和退出:

@IBAction func unwindToRootViewController(segue: UIStoryboardSegue) {
    print("Unwind to Root View Controller")
}
Run Code Online (Sandbox Code Playgroud)

但我的简单segue不起作用.我究竟做错了什么?

ios segue swift unwind-segue swift3

10
推荐指数
1
解决办法
8426
查看次数

ios8 unwind segue无法使用UINavigationBarController和UITabBarController(在iOS 8.1中已修复)

我刚开始使用Xcode 6(beta 6)在iOS8上测试我的iOS7应用程序.我知道iOS 8已经弃用了"推"和"模态"segue,但我很高兴地发现我所有的segue都工作了......除了一个.

我构建了一个演示应用程序,以显示如果您的应用程序使用带有UINavigationController的UITabBarController,则从模态segue展开似乎会被破坏.(我看到了另一个放松的segue帖子,但是它使用的是swift,我的演示应用程序使用的是obj-c).

以下是我更具体的看法:[UITabBarContoller] - > [UINavigationController] - > [SomeViewController] - (模态Segue) - > [此ViewController无法解除]

有趣的是,你可以放松,如果你做另一个模态segue:[UITabBarContoller] - > [UINavigationController] - > [SomeViewController] - (模态Segue1) - > [这个ViewController不能放松] - (Modal Segue2) - > [这个ViewController可以放松]

我还发现如果我删除UITabBarController或UINavigationController我可以放松,但我不打算改变我的整个应用程序UI架构:)

从我所看到的,根视图控制器永远不会收到对canPerformUnwindSegueAction的调用:fromViewController:withSender:它在iOS7中执行.

我的问题:我是否应该采用不同的方式让我放松工作?

谢谢阅读.

演示代码在这里:https://github.com/nmsasaki/UnwindDemo

UPDATE

这个问题似乎已经被iOS8.1修复了.(iOS 8.0解决方法是创建UINavigationController的自定义子类继续工作.)

objective-c ios8 xcode6-beta6 unwind-segue

7
推荐指数
1
解决办法
1938
查看次数

Unwind Segue不会使用UIModalPresentationCustom解除View Controller

我(通过其设置呈现使用自定义过渡模态的视图控制器modelPresentationStyleUIModalPresentationCustom,提供了一个过渡代表,和UIViewControllerAnimatedTransitioning对象).

在提供的视图控制器中,我有一个unwind segue连接到一个按钮.塞古火灾很好; IBAction调用呈现视图控制器中的方法,并且在呈现的视图控制器中也是如此prepareForSegue.但是,呈现的视图控制器不会被解除,并且animationControllerForDismissedController:不会调用适当的转换委托方法().

但是,如果我将呈现的视图控制器设置modalPresentationStyleUIModalPresentationFullScreen(默认值),则视图控制器将被正确解除(但这会破坏我的自定义转换).

我完全不知道该做什么.我查看了Apple的文档,并没有注意到任何说在处理自定义转换时必须使用unwind segue做特殊事情的事情.

我知道我可以使用呈现视图控制器dismissViewControllerAnimated:completion:IBAction方法调用,但我宁愿使用它作为最后的手段,让它按照它应该的方式工作(或者至少知道它为什么不起作用:) ).

任何帮助将非常感激,

提前致谢

uiviewcontroller ios uimodalpresentationstyle unwind-segue

7
推荐指数
1
解决办法
1796
查看次数

在模拟当前上下文时,在展开时,不会调用viewDidAppear

我有一个我正在开发的应用程序的问题.

  • XCode版本:9.2(9C40b)
  • 编程语言:Swift 4
  • 该应用的目标iOS版本:11.2

场景:我有一个mainVC(ViewController),它调用一个模态呈现的secondaryVC.在secondaryVC中进行选择后,我按下UIButton,通过展开segue返回mainVC.

在secondaryVC中,转换配置为"Cross Disolve"和Presentation,作为"Over Current Context"以将上一个视图视为背景(背景配置为50%不透明度):

在此输入图像描述

症状:在这种情况下,当通过展开segue返回时,viewDidAppear永远不会被调用.我需要调用它来执行进一步的检查功能.它被调用,如果不是"过度上下文",我将演示文稿设置为"全屏",但在这种情况下,我无法将前一个视图视为背景.

问题:如何通过mainVC调用viewDidApper来保持secondaryVC的透明度?

PS:对不起,如果我在写这个问题时遗漏了什么; 这是我的第一次.我搜索了这个和其他论坛,我还没有找到解决方案(或者我没有找到它).

transparency viewdidappear ios swift unwind-segue

6
推荐指数
1
解决办法
1441
查看次数