繁体   English   中英

如何在呈现的View Controller和呈现的View Controller之间建立关系?

[英]How to setup a relationship between the presenting View Controller and the presented View Controller?

我仍在学习Objective-C,并且很难从展示VC中解散展示的VC。

我读到要实现此目的,您需要建立代表以将正确的消息从所呈现的VC发送回所呈现的VC。

我的情节提要看起来像这样: 在此处输入图片说明

我遇到的问题是,如果单击UIBUtton2,它不会返回到Main 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];
}

我确定我不太了解这种关系。 有人可以告诉我我在做什么错吗?

谢谢

从上面的评论中我了解到,我看到您的主VC正确显示了VC1 Modally。 所以我想您的VC1.m中有此代码

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

接下来,确保您的VC1中的单元格具有“触发的序列”选择类型为“显示”。 而且您可能在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];
}

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM