![](/img/trans.png)
[英]How to temporarily hide a presented View controller that is also presenting a 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.