iphone在一个UIViewController到另一个之间切换

时间:2011-05-19 16:43:35

标签: ios objective-c iphone cocoa cocoa-touch

我有一个名为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];
}

似乎无法调用父方法。请帮帮我......

2 个答案:

答案 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];
}