从导航返回按钮Unwind segue



我试图通过执行unwind segue将数据传递回源视图控制器。我在这里找到了答案:带导航返回按钮的Unwind segue

我遵循了第一个答案中的说明,但是segue从未被触发。

在源视图控制器的。h:

- (IBAction)returnJ:(UIStoryboardSegue *)segue;

这是我的源视图控制器。m:

- (IBAction)returnJ:(UIStoryboardSegue *)segue
{
    NSLog(@"Returned");
    if ([[segue identifier] isEqualToString:@"return Jobs"]) {
        NSLog(@"Retuned");
        resSolarViewController *returnController = [segue sourceViewController];
        if (returnController.jobsList) {
            self.jobs = returnController.jobsList;
            [[self tableView] reloadData];
        }
        [self dismissViewControllerAnimated:YES completion:NULL];
    }
}

我很确定我在IB中正确地连接了一切,但这两个nlog都没有显示在控制台中。

我做错了什么?

谢谢。

如果只传递数据回你的源视图控制器,你可以使用委托来做。如何传递prepareForSegue:一个对象

@JosephGagliardo走在正确的道路上。然而,你必须添加一个测试来防止segue在没有返回到第一个视图控制器时触发。viewWillDisappear中这样的东西会允许你对返回按钮执行unwind segue。你不需要一个来自虚拟(屏幕外)按钮的动作segue。创建一个手动unwind segue,从类拖到退出图标。请确保在创建后为其命名。

UIViewController *vc = self.navigationController.topViewController;
if ([FirstViewController class] == [vc class])
{
    [self performSegueWithIdentifier:@"unwindSegue" sender:self];
}

我创建了一个普通的UIButton并将它连接到我想要的退出segue。然后我让按钮不可见,并将它的X、Y坐标移出屏幕。在dock中找到segue,在属性检查器中给它取个名字。然后在viewWillDisappear中,我通过编程调用了segue,通过name:

[self performSegueWithIdentifier:@"unwindFromSettings" sender:self];

我对普通segue和unwind segue都这样做。创建一个隐藏按钮作为我以编程方式调用的segue的GUI占位符

最新更新