2010-09-05 66 views
0

我被困在教程中,试图用工具栏切换视图。我的代码生成良好,我把一些警报检查工具栏正在工作,它是。但我插入的子视图根本没有显示出来。任何人都可以帮忙吗?insertSubView:未显示我的视图

这是我的主控制器代码..

MainViewController.h是

 

#import 

@class FlavourPickerView; 
@class ShakeView; 
@class ResultsView; 

@interface MainViewController : UIViewController { 

    IBOutlet FlavourPickerView *flavourPickerView; 
    IBOutlet ShakeView *shakeView; 
    IBOutlet ResultsView *resultsView; 
} 

@property (retain,nonatomic) FlavourPickerView *flavourPickerView; 
@property (retain,nonatomic) ShakeView *shakeView; 
@property (retain,nonatomic) ResultsView *resultsView; 

-(IBAction)loadFlavourPickerView:(id)sender; 
-(IBAction)loadShakeView:(id)sender; 
-(IBAction)loadResultsView:(id)sender; 

-(void)clearView; 

@end 


这里是MainViewController.m

 
#import "MainViewController.h" 
#import "FlavourPickerView.h" 
#import "ShakeView.h" 
#import "ResultsView.h" 

@implementation MainViewController 

@synthesize flavourPickerView; 
@synthesize shakeView; 
@synthesize resultsView; 


-(IBAction)loadFlavourPickerView:(id)sender{ 
UIAlertView *alertDialog; 
alertDialog = [[UIAlertView alloc] 
     initWithTitle:@"Flavour selected" 
     message:@"Seems to work" 
     delegate:nil 
     cancelButtonTitle:@"OK!" 
     otherButtonTitles:nil]; 
[alertDialog show]; 
[alertDialog release]; 

[self clearView]; 
[self.view insertSubview:flavourPickerView.view atIndex:10]; 
} 


-(IBAction)loadShakeView:(id)sender{ 
UIAlertView *alertDialog; 
alertDialog = [[UIAlertView alloc] 
     initWithTitle:@"Shaker selected" 
     message:@"Seems to work" 
     delegate:nil 
     cancelButtonTitle:@"OK!" 
     otherButtonTitles:nil]; 
[alertDialog show]; 
[alertDialog release]; 

[self clearView]; 
[self.view insertSubview:shakeView.view atIndex:0]; 
} 


-(IBAction)loadResultsView:(id)sender{ 
UIAlertView *alertDialog; 
alertDialog = [[UIAlertView alloc] 
     initWithTitle:@"Results selected" 
     message:@"Seems to work" 
     delegate:nil 
     cancelButtonTitle:@"OK!" 
     otherButtonTitles:nil]; 
[alertDialog show]; 
[alertDialog release]; 

[self clearView]; 
[self.view insertSubview:resultsView.view atIndex:0]; 

} 


-(void)clearView{ 
if(flavourPickerView.view.superview){ 
    [flavourPickerView.view removeFromSuperview]; 
}else if(shakeView.view.superview){ 
    [shakeView.view removeFromSuperview]; 
}else{ 
    [resultsView.view removeFromSuperview]; 
} 
} 


// Implement viewDidLoad to do additional setup after loading the view, typically from a nib. 
- (void)viewDidLoad { 
[self loadFlavourPickerView:nil]; 
[super viewDidLoad]; 
} 


- (void)didReceiveMemoryWarning { 
// Releases the view if it doesn't have a superview. 
    [super didReceiveMemoryWarning]; 

// Release any cached data, images, etc that aren't in use. 
} 

- (void)viewDidUnload { 
// Release any retained subviews of the main view. 
// e.g. self.myOutlet = nil; 
} 


- (void)dealloc { 
[flavourPickerView release]; 
[shakeView release]; 
[resultsView release]; 
    [super dealloc]; 
} 

@end 

和这里是另一个的一个的一个例子视图,从FlavourPickerView.h开始

 

#import 


@interface FlavourPickerView : UIViewController { 

} 

@end 

和FlavourPickerView.m

 
#import "FlavourPickerView.h" 


@implementation FlavourPickerView 

- (void)didReceiveMemoryWarning { 
    // Releases the view if it doesn't have a superview. 
    [super didReceiveMemoryWarning]; 

    // Release any cached data, images, etc that aren't in use. 
} 

- (void)viewDidUnload { 
    [super viewDidUnload]; 
    // Release any retained subviews of the main view. 
    // e.g. self.myOutlet = nil; 
} 

- (void)dealloc { 
    [super dealloc]; 
} 


@end 

还有为flavourPickerView笔尖和我已经加入到子视图我MAINVIEW,设置为FlavourPickerView类和笔尖的名字是FlavourPickerView.xib。

回答

1

是否flavourPickerView,shakeViewresultsView在您将视图添加到此UIViewController视图时正确初始化? 另一件事:避免调用一个UIViewController只是'XXXView',而是尝试'XXXViewController'

+0

已经在上面的例子中添加了更多的代码,并指出你关于XXXViewController的有效观点,是有道理的。 – 2010-09-05 16:54:44

+0

您是否试图以编程方式添加控制器而不是使用Interface Builder? – rano 2010-09-05 17:50:51