如何在呈现视图控制器和呈现的视图控制器之间建立关系?
问题描述:
我还在学习Objective-C和有困难的时候,从风险投资呈现解雇提出风险投资。如何在呈现视图控制器和呈现的视图控制器之间建立关系?
我看,要实现这一点,你建立委托给正确的信息从呈现的VC发送回呈现VC。
我的故事板看起来像这样:
我已经是如果我点击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];
}
我敢肯定,我没有正确理解这种关系。有人能告诉我我做错了什么吗?
感谢
答
从我在您的意见明白上面我看到你的主要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];
}
如果这些都是你,它应该工作就像一个魅力。在这种情况下,没有代表需要。希望这可以帮助。
你不需要代表做到这一点。如果UIButton2有代码,[self dismissViewControllerAnimated:YES completion:nil],它应该工作。当你自己调用该方法时,它会自动转发到呈现视图控制器。 – rdelmar 2014-11-23 01:10:12
我最初没有做代表,为我所用代码的UIButton,但在从VC2转变回VC1,我得到“试图提出关于VC2谁的观点是不是在窗口层次VC1”,所以我就开始使用委托 – Pangu 2014-11-23 01:14:05
不应该发生,如果你做得对。没有看到你的代码,我不明白你做错了什么。 – rdelmar 2014-11-23 01:15:18