如何在呈现视图控制器和呈现的视图控制器之间建立关系?

问题描述:

我还在学习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

从我在您的意见明白上面我看到你的主要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]; 
} 

如果这些都是你,它应该工作就像一个魅力。在这种情况下,没有代表需要。希望这可以帮助。