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

时间:2014-11-23 01:05:24

标签: ios objective-c xcode

我仍然在学习目标-c并且很难解释所呈现的VC来呈现VC。

为了达到这个目的,我认为你可以建立代表,将正确的消息发送回现有VC中的VC。

我的故事板看起来像这样: enter image description here

我遇到的问题是如果我点击UIBUtton2,它就不会回到主VC。事实上,它什么也没做。

然而,点击VC1中的任何单元格转换为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];
}

我确定我没有正确理解这种关系。有人能告诉我我做错了吗?

由于

1 个答案:

答案 0 :(得分:0)

根据我在上面的评论中的理解,我看到你的主VC显示VC1模式正确。 所以我猜你在VC1.m中有这个代码

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

接下来确保VC1中的Cell具有'触发的Seques'选择类型'Show'。你可能在你的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];
}

如果你拥有这些,它应该像魅力一样。在这种情况下,没有代表需要。希望这可以帮助。