2010-09-05 68 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