我有一个名为GuideViewController的主视图控制器和另一个名为RestauranterViewController的视图控制器。在GuideViewController中,我有一个UIView层次结构,其中guideParentView位于mainView下。现在我想切换到另一个名为RestauranterViewController的视图控制器,这里我正在加载RestauranterViewController.xib GuideViewController.xib,其中mainView所在,但我隐藏了guideParentView。现在我想从RestauranterViewController切换到GuideViewController。但是我不能。 有人可以帮帮我吗?
@class RestauranterViewController;
@interface GuideViewController : UIViewController {
IBOutlet UIView *mainView;
IBOutlet UIView *guideParentView;
}
@property(nonatomic,readonly,retain) IBOutlet UIView *mainView;
@property(readwrite,assign) IBOutlet UIView *guideParentView;
现在当我点击开关按钮时,下面的方法就是调用
#import "GuideViewController.h"
#import "RestauranterViewController.h"
@implementation GuideViewController
-(IBAction)select:(id)sender{
guideParentView.hidden = YES;
RestauranterView = [[RestauranterViewController alloc] initWithNibName:@"RestauranterViewController" bundle:[NSBundle mainBundle]];
RestauranterView.view.frame = CGRectMake(0, 100, 299, 220);
[mainView addSubview: RestauranterView.view];
}
在RestauranterView中,当我点击一个按钮使隐藏的视图可见但它失败时。
@interface RestauranterViewController : UIViewController {
GuideViewController *GuideView;
}
#import "RestauranterViewController.h"
#import "GuideViewController.h"
@implementation RestauranterViewController
-(IBAction)back:(id)sender{
GuideView = [[GuideViewController alloc] init];
GuideView.guideParentView.hidden = NO;
[self.view removeFromSuperview];
}
似乎无法调用父方法。请帮帮我......
答案 0 :(得分:2)
每次打算来回移动时,您都在创建两个控制器的新实例。它也会造成泄漏。
你应该看看UINavigationController。如果将来需要添加更多控制器,它将真正简化您的问题。有很多关于如何创建一个教程的教程。您可以从this开始。
答案 1 :(得分:1)
最后我通过以下代码解决了这个问题 我可以使用objectAtIndex或viewWithTag
-(IBAction)back:(id)sender{
superView = (UIView *)self.view.superview;
//UIView *perentView = [[topView subviews] objectAtIndex:6];//Its the Object Index in the XIB file
UIView *parentView = (UIView *)[superView viewWithTag:177];//I have put a Tag of 177 in the tag field in the XIB.
parentView.hidden = NO;
[self.view removeFromSuperview];
}