2014-11-23 124 views
0

我還在學習Objective-C和有困難的時候,從風險投資呈現解僱提出風險投資。如何在呈現視圖控制器和呈現的視圖控制器之間建立關係?

我看,要實現這一點,你建立委託給正確的信息從呈現的VC發送回呈現VC。

我的故事板看起來像這樣: enter image description here

我已經是如果我點擊UIBUtton2,它不返回主VC的問題。事實上,它什麼都不做。

然而,點擊從VC1 SEGUE到VC2任何細胞和點擊UIButton3過渡回VC1作爲實現。

MainVC.h:

#import "VC1.h" 
@interface MainVC : UIViewController <VC1Delegate> 
.... 

MainVC.m:

- (void)didGoBackToMainVC 
{ 
    [self dismissViewControllerAnimated:YES completion:nil]; 
} 

.... 

VC1·H:

#import "VC2.h" 
@protocol VC1Delegate <NSObject> 

@required 

- (void)didGoBackToMainVC; 

@end 

@interface VC1 : UIViewController <UITableViewDataSource, UITableViewDelegate, 
VC2Delegate> 

@property (weak, nonatomic) id <VC1Delegate> delegate; 

- (IBAction)UIButton2:(UIButton *)sender; 

VC1.m:

- (void)didGoBackToVC1 
{ 
    [self dismissViewControllerAnimated:YES completion:nil]; 
} 

- (IBAction)UIButton2:(UIButton *)sender 
{ 
    [self.delegate didGoBackToMainVC]; 
} 

VC2.h:

@protocol VC2Delegate <NSObject> 

@required 

- (void)didGoBackToVC1; 

@end 

@interface VC2 : UIViewController 

@property (weak, nonatomic) id <VC2Delegate> delegate; 

- (IBAction)UIButton3:(UIButton *)sender; 

VC2.m:

- (IBAction)UIButton3:(UIButton *)sender 
{ 
    [self.delegate didGoBackToSponsors]; 
} 

我敢肯定,我沒有正確理解這種關係。有人能告訴我我做錯了什麼嗎?

感謝

+0

你不需要代表做到這一點。如果UIButton2有代碼,[self dismissViewControllerAnimated:YES completion:nil],它應該工作。當你自己調用該方法時,它會自動轉發到呈現視圖控制器。 – rdelmar 2014-11-23 01:10:12

+0

我最初沒有做代表,爲我所用代碼的UIButton,但在從VC2轉變回VC1,我得到「試圖提出關於VC2誰的觀點是不是在窗口層次VC1」,所以我就開始使用委託 – Pangu 2014-11-23 01:14:05

+0

不應該發生,如果你做得對。沒有看到你的代碼,我不明白你做錯了什麼。 – rdelmar 2014-11-23 01:15:18

回答

0

從我在您的意見明白上面我看到你的主要VC正確顯示VC1模態。 所以我猜你有這樣的代碼在你的VC1.m

- (IBAction)goToMainVC:(id)sender 
{ 
    [self dismissViewControllerAnimated:YES completion:nil]; 
} 

下一頁確保您在VC1細胞已經「觸發Seques」「顯示」的選擇類型。你可能有這樣的代碼在你的VC1.m

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 
{ 
    if ([segue.identifier isEqualToString:@"pushVC2"]) { 

    VC2 *vc2 = (VC2 *)segue.destinationViewController; 

    } 
} 

接下來你VC2.m你也應該有這樣的

- (IBAction)dismissVC2:(id)sender 
{ 
    [self dismissViewControllerAnimated:YES completion:nil]; 
} 

如果這些都是你,它應該工作就像一個魅力。在這種情況下,沒有代表需要。希望這可以幫助。

相關問題