确定segue并解除VC身份?

时间:2014-01-27 04:40:01

标签: objective-c uiviewcontroller

我是Objective-C的新手,虽然我已用其他语言编码。

有人可以给我一个简单的答案,说明如何识别我已经解开的哪个VC"从一个segue?请原谅我对语言的不良使用!

根据按下的按钮,我有一个场景可以分成两个不同的场景。从这些场景中的任何一个展开时,我想对传回的数据执行特定的操作。但是为了不让整个事情崩溃(这种事情不断发生!),我需要确定我从哪个场景返回,即展开源(?)场景的身份或标识符,然后使用它确定要采取的行动的信息。

我尝试在Storyboard中设置segue标识符并尝试在目标和源中获取这些值,但在调试时它们总是为空。

这是一段代码,可能比我笨手笨脚的解释更清晰!

    - (IBAction)unwindToList:(UIStoryboardSegue *)segue
{
    ToDoListViewController *source = [segue sourceViewController];

    // HOW DO I DETERMINE WHICH VC I’VE JUST UNWOUND FROM?

    if (/* UNWOUND FROM FIRST SCENE */) {

        // DO SOMETHING
    }
    if (/* UNWOUND FROM SECOND SCENE */) {

        // DO SOMETHING ELSE
    }
}

更新:

我已经尝试过使用segue.identifier给出的建议,但它会继续返回" null。"这是1)有问题的代码,2)结果日志,以及3)segue标识符的确认:

- (IBAction)unwindToList:(UIStoryboardSegue *)segue
{
    ToDoListViewController *source = [segue sourceViewController];//WAS AddToDoItemViewController but did NOT work.
    NSLog(@"segue from: %@", source);
    NSLog(@"segue identifier: %@", segue.identifier);
    if ([segue.identifier isEqualToString:@"addItemScene"]) {
        if (source.toDoItem.flag == 1) {
        ToDoItem *item = source.toDoItem;
        if (item != nil) {
            [self.toDoItems addObject:item];
            [self.tableView reloadData];
            }
        }
    }
}

记录结果: 2014-01-27 22:01:07.163 ToDoListML [1367:70b] segue from:AddToDoItemViewController:0x8a98a20 2014-01-27 22:01:07.165 ToDoListML [1367:70b] segue identifier:(null)

我已经仔细检查了segue标识符是否已设置且是否正确。

1 个答案:

答案 0 :(得分:0)

标识符可以设置为 - 选择连接 - 移动到属性检查器面板

if ([segue.identifier isEqualToString:@"Your first Controller"])
{
        ToDoListViewController *source = [segue destinationViewController];//this line needs to be changed, it works in prepare for segue, so it must work here as well
}
else if([segue.identifier isEqualToString:@"Your second Controller"])
{

}