gpt4 book ai didi

iphone - PerformSegueWithIdentifier 不起作用

转载 作者:行者123 更新时间:2023-12-03 18:34:09 26 4
gpt4 key购买 nike

我的主视图 Controller 位于导航 Controller 中,它符合 EditViewControllerDelegate 协议(protocol)。这是我需要以模态方式呈现的两个 View Controller 的委托(delegate)。

@interface EditViewController : UIViewController
@property (nonatomic) id <EditViewControllerDelegate> delegate;
@end

@interface EditSomethingViewController : EditViewController
@end

@interface EditSomethingElseViewController : EditViewController
@end

editViewController:(EditViewController *)evc didFinishEditing:(Something *) some 方法中,我首先获取所需的数据,然后关闭 evc 并调用

[self performSegueWithIdentifier:@"My Segue" sender:self];

“My Segue”是在 Xcode 中定义的,并且标识符在代码和 Xcode 中都是相同的(我尝试更改它只是为了看看它是否被调用并抛出异常)

当我将“My Seque”的类型更改为推送时,它起作用了。但是对于模态,当我回到主视图 Controller 后它不会执行任何操作

我错过了什么?

编辑:

我无意中在 Storyboard中发现了一条警告! (这很奇怪,因为它不是项目中的警告“从任何地方都可见”)在“引用 Storyboard转场”下的连接检查器中,有一个针对我的模态转场的警告。它说:

(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];
}

最佳答案

在执行 segue 之前,您需要等待其他 View Controller 完成动画处理。您可以使用新的 iOS 5 方法:

[self dismissViewControllerAnimated:YES completion:^() {
[self performSegueWithIdentifier:@"My Segue" sender:self];
}];

如果您需要 iOS 5 之前的方法来执行此操作,则只需添加一个延迟,以便在执行转场之前为动画提供时间。

关于iphone - PerformSegueWithIdentifier 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10233424/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com