【发布时间】:2012-05-01 06:47:50
【问题描述】:
我的主视图控制器位于导航控制器中,它符合EditViewControllerDelegate 协议。这是我需要以模态方式呈现的两个视图控制器的委托。
@interface EditViewController : UIViewController
@property (nonatomic) id <EditViewControllerDelegate> delegate;
@end
@interface EditSomethingViewController : EditViewController
@end
@interface EditSomethingElseViewController : EditViewController
@end
在 editViewController:(EditViewController *)evc didFinishEditing:(Something *) something 方法中,我首先获取所需的数据,然后关闭 evc 并调用
[self performSegueWithIdentifier:@"My Segue" sender:self];
“My Segue”在 Xcode 中定义,标识符在代码和 Xcode 中是相同的(我试图更改它只是为了查看它是否被调用并引发异常)
当我将“My Seque”的类型更改为 push 时,它起作用了。 但是在我回到主视图控制器后,它不会做任何事情
我错过了什么?
已编辑:
我不小心在我的故事板中发现了一个警告! (这很奇怪,因为它不是项目中“随处可见”的警告) 在“引用故事板转场”下的连接检查器中,我的模态转场有一个警告。它说:
(null) is not a valid containment controller key path
我检查了其他模态序列,也有同样的警告,但我不需要通过代码触发它们,所以之前没有问题。
编辑 2:
-(void)editViewController:(EditViewController *) evc
didFinishEditing:(Something *) something
{
self.something = something;
[self dismissModalViewControllerAnimated:YES];
For ( OtherThing * otherThing in self.something.otherthingsArray)
{
NSLog(@"%@", otherThing);
}
[self performSegueWithIdentifier:@"My Segue" sender:self];
}
【问题讨论】:
-
你能告诉我们你的整个 editViewController:(EditViewController *)evc didFinishEditing:(Something *)something 方法吗?
-
现在除了 NSLog 来查看“某事”的描述之外,它什么也不做。我刚刚添加了一个 NSlog 到 prepareForSegue,它被调用了,但是 segue 没有在屏幕上执行。
-
我以为您说您正在关闭编辑视图控制器并在该方法中调用 performSegueWithIdentifier。你在哪里做这些事情?我想看看你是怎么做这部分的,看看是不是错在哪里。
-
是的,当然!但我没有别的意思。我将把它添加到问题中只是为了消除歧义。(编辑 2)
-
视图应该如何执行:[self performSegueWithIdentifier:@"My Segue" sender:self];如果它在 [self dismissModalViewControllerAnimated:YES] 之前解雇自己; ?
标签: iphone ios5 xcode4.3 segue uistoryboard