iphone之间切换一个UIViewController到另一个
问题描述:
我有一个名为GuideViewController的主视图控制器和另一个名为RestauranterViewController的视图控制器。在GuideViewController中,我有一个UIView层次结构,其中的guideParentView驻留在mainView下。现在我想切换到另一个名为RestauranterViewController的视图控制器,在这里我通过 加载RestauranterViewController.xib GuideViewController.xib,其中mainView驻留,但即时将制作guideParentView隐藏。现在我想从RestauranterViewController切换到GuideViewController。但是我不能。 任何人都可以帮我吗?iphone之间切换一个UIViewController到另一个
@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];
}
似乎是它不能调用父方法。请帮助我...
答
最后我有下面的代码 解决它,我可以使用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];
}
答
您每次打算来回移动时都会创建两个控制器的新实例。它也造成泄漏。
你应该看看UINavigationController。如果将来您需要添加更多控制器,它将真正简化您的问题。有许多关于如何创建教程的教程。你可以从this开始。
谢谢,但我不需要任何的UINavigationController。我已经通过viewWithTag解决了。 – itsazzad 2011-05-21 06:50:40