在NavigationController后退按钮上委派/展开Segue

时间:2016-03-14 15:15:07

标签: ios xcode swift

我有一个有三种观点的应用程序:

  • 的firstView
  • SecondView
  • ThirdView

当我在第三视图上并点击导航控制器上的后退按钮时,我想将数据从ThridView传递到SecondView。 但我不知道该怎么做。

我不想在我的视图中添加额外的按钮。

当我在SecondView上时我也想回到FirstView。 我不能使用“ViewWillDisappear”方法,因为如果在此方法上设置“PerformSegueWithIdentifier”将数据从SecondView传递到FirstView,我将无法切换到ThirdView,因为将执行“ViewWillDisappear”方法。

你能帮帮我吗?

PS:我使用语言swift 2

2 个答案:

答案 0 :(得分:0)

viewWillDisappearviewDidDisappear方法中,您可以通过检查视图控制器是否从父视图控制器移动来检查是否按下了后退按钮。

override func viewWillDisappear(animated: Bool) {

    if(self.isMovingFromParentViewController())
    {
        //Send data to previous view controller
        print("Going back: Back button pressed");
    }else{
        print("Controller is hidden due to some other reason e.g Pushing another view controller");
    }
}

答案 1 :(得分:0)

我创建了UINavigationController的子类,因为自Xcode 12起,我无法在UIViewController中找到Unwind Segue签名。

@implementation CLUnwindNavigationController

- (BOOL)canPerformUnwindSegueAction:(SEL)action fromViewController:(UIViewController *)fromViewController withSender:(id)sender {
    return NO;
}

- (IBAction)unwindForSegue:(UIStoryboardSegue *)unwindSegue towardsViewController:(UIViewController *)subsequentVC {
}

@end

您可以找到UnwindSegue签名。 You can find UnwindSegue signature.

您可以连接到所需的操作。 You can connect to your desire action.