iphone开发:从不同的viewControllers到达对象

时间:2012-09-02 15:55:23

标签: iphone objective-c ios imageview viewcontroller

在我的应用程序中,我遇到了问题,听起来很简单,但我无法解决。嗯,情况就是这样。

我有两个viewControllers。 VC1和VC2。在VC1中,我有一个按钮和一个imageView。按下按钮时,imageView将动画从左向右移动,并通过pushtoViewController打开VC2。在VC2中还有一个按钮,它是一个后退按钮,按下它时应该打开第一个VC1,图像应该从右向左移动。

我可以使用PopViewController打开VC1但是我无法控制VC2的imageview,因此我可以从右到左设置动画。如何从VC2到达VC1的imageView?

2 个答案:

答案 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
    }
}