【发布时间】:2014-01-30 12:52:53
【问题描述】:
我是 Objective-C 的新手,虽然我用其他语言编写过代码。
谁能给我一个简单的答案,告诉我如何识别我在 segue 中“解散”了哪个 VC?原谅我语言不好!
我有一个场景可以根据按下的按钮切换为两个不同的场景。当从这些场景中的任何一个展开时,我想对传回的数据执行特定的操作。但是为了不让整个事情崩溃(这种情况一直在发生!),我需要确定我从哪个场景返回,即展开的源(?)场景的身份或标识符,然后使用这些信息来确定要采取的行动。
我尝试在 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] 来自:AddToDoItemViewController:0x8a98a20 2014-01-27 22:01:07.165 ToDoListML[1367:70b] segue 标识符:(null)
我已经仔细检查了 segue 标识符是否已设置并且是正确的。
【问题讨论】:
-
我已经发布了答案
-
您好,亲爱的,您可以创建不同的退出调用,例如 (IBAction)unwindToListFromScene1:(UIStoryboardSegue *)segue 将您的操作连接到此。
标签: objective-c uiviewcontroller