从导航后退按钮展开segue

时间:2013-06-20 09:22:59

标签: ios segue

我正在尝试通过执行展开segue将数据传回我的源视图控制器。我在这里找到了答案: Unwind segue with Navigation back button

我按照第一个答案中的说明操作,但是从未触发过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中正确连接了所有内容,但是这两个NSLog都没有在控制台中显示。

我做错了什么?

感谢。

3 个答案:

答案 0 :(得分:1)

如果仅将数据传递回源视图控制器,则可以使用委托来执行此操作。 How to pass prepareForSegue: an object

答案 1 :(得分:1)

@JosephGagliardo走在正确的轨道上。但是,您必须添加测试以防止在不返回第一个视图控制器时触发segue。 viewWillDisappear中的这样的东西实际上允许你为后退按钮执行展开segue。您不需要虚拟(屏幕外)按钮的动作segue。只需通过从类向下拖动到退出图标来创建手动展开segue。请务必在创建后为其命名。

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

答案 2 :(得分:0)

我创建了一个常规的UIButton并将其连接到我想要的出口segue。然后,我使按钮不可见,并将其X,Y坐标移出屏幕。在Dock中找到segue,在属性检查器中找到它,为其命名。然后在viewWillDisappear中,我以编程方式按名称调用segue:

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

我为正常和放松的段落都这样做。创建一个隐藏按钮作为我以编程方式调用的segue的GUI占位符。