2012-09-02 46 views
0

在我的應用程序,我有一個問題,這聽起來很簡單,但我無法解決它。那麼,情況就是這樣。iphone開發:從不同的viewControllers達到對象

我有兩個viewControllers。 VC1和VC2。在VC1中,我有一個按鈕和一個imageView。按下該按鈕時,imageView將通過動畫從左向右移動,VC2由pushtoViewController打開。在VC2中還有一個按鈕,它是一個後退按鈕,當它被按下時,它應該打開第一個VC1,圖像應該從右向左移動。

我可以通過使用PopViewController打開VC1,但是我無法控制VC2中的imageview,因此我可以從右向左對其進行動畫處理。如何從VC2到達VC1的imageView?

+0

,你可以添加一個委託方法VC2,VC2時被彈出時調用。使VC1成爲VC2的委託並將動畫寫入此委託方法應該可行。 –

回答

1

第一個答案相當正確,但我有另一個解決方案。

您可以覆蓋VC1的viewDidAppear:消息類似的東西:

- (void)viewDidAppear:(BOOL)animated 
{ 
    [super viewDidAppear:animated]; 

    if (imageView.frame.origin.x > 0.0) { 
     // make your animation here 
    } 
} 
+0

這是天才。謝謝:) – death7eater

4

這是如何調用你的VC2在VC1:

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

} 

這是最乾淨的,並通過蘋果推薦的方式 - 它看起來笨重的 - 我同意 - 但它的工作原理,你習慣了它:-)

+0

DismissViewControllerAnimated:完成是推薦的方法。 dissmissModelViewControllerAnimated已棄用。 –

+0

謝謝 - 當然你是對的 - 我修改了答案以反映新的方式... – user387184

+0

非常感謝。 – death7eater