在我的应用程序中,我遇到了问题,听起来很简单,但我无法解决。嗯,情况就是这样。
我有两个viewControllers。 VC1和VC2。在VC1中,我有一个按钮和一个imageView。按下按钮时,imageView将动画从左向右移动,并通过pushtoViewController打开VC2。在VC2中还有一个按钮,它是一个后退按钮,按下它时应该打开第一个VC1,图像应该从右向左移动。
我可以使用PopViewController打开VC1但是我无法控制VC2的imageview,因此我可以从右到左设置动画。如何从VC2到达VC1的imageView?
答案 0 :(得分:4)
这是在VC1中调用VC2的方法:
VC2 *vc2 = [[VC2 alloc] initWithNibName:@"VC2" bundle:nil ];
vc2.delegate = self; // here you set the delegate for the coming back call
[self presentModalViewController: vc2 animated: YES]; // or however you present your VC2
这就是你从vc2回到vc1的方式,你打电话:
[self.delegate vc2HasFinished];
为此,你需要创建一个这样的协议:
在VC2Protocol.h
@protocol VC2Protocol <NSObject>
-(void)vc2HasFinished;
@end
然后在VC1和VC2中包含此VC2Protocol.h
。在VC1中,你必须像这样定义这个方法:
-(void) weitereRufNrVCDidFinish{
[self dismissModalViewControllerAnimated:YES completion: nil];
}
这是Apple最干净,最推荐的方式 - 它看起来很麻烦 - 我同意 - 但是它有效并且你已经习惯了: - )
答案 1 :(得分:1)
第一个答案非常正确,但我还有另一个解决方案。
您可以使用以下内容覆盖VC1的viewDidAppear:
消息:
- (void)viewDidAppear:(BOOL)animated
{
[super viewDidAppear:animated];
if (imageView.frame.origin.x > 0.0) {
// make your animation here
}
}