2010-04-08 112 views
0

我有一个TabBar应用程序,我想在横向和纵向。问题是当我去标签2从我的表中选择,然后选择标签1并旋转设备,然后再次选择标签2的内容不知道该设备旋转,并不会正确显示我的自定义定向内容。我试图写一个priovate方法,告诉视图它是目前的方向。在viewDidLoad我假设它是在肖像,但在shouldAutoRotate我有它在私人方法寻找正确的内容对齐方式。请帮忙!!这里是我的代码:横向和纵向视图在TabBar应用程序中的问题

#import "DetailViewController.h" 
#import "ScheduleTableViewController.h" 
#import "BrightcoveDemoAppDelegate.h" 
#import "Constants.h" 

@implementation DetailViewController 


@synthesize CurrentLevel, CurrentTitle, tableDataSource,logoName,showDescription,showDescriptionInfo,showTime, showTimeInfo, tableBG; 

- (void)layoutSubviews { 

showLogo.frame = CGRectMake(40, 20, 187, 101); 
showDescription.frame = CGRectMake(85, 140, 330, 65); 
showTime.frame = CGRectMake(130, 10, 149, 119); 
tableBG.frame = CGRectMake(0, 0, 480, 320); 

} 

/* 
// The designated initializer. Override if you create the controller programmatically and want to perform customization that is not appropriate for viewDidLoad. 
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil { 
    if (self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]) { 
     // Custom initialization 
    } 
    return self; 
} 
*/ 

/* 
// Implement loadView to create a view hierarchy programmatically, without using a nib. 
- (void)loadView { 
} 
*/ 


// Implement viewDidLoad to do additional setup after loading the view, typically from a nib. 
- (void)viewDidLoad { 
    [super viewDidLoad]; 
self.navigationItem.title = CurrentTitle; 
[showDescription setEditable:NO]; 
//show the description 
showDescription.text = showDescriptionInfo; 
showTime.text = showTimeInfo; 
NSString *Path = [[NSBundle mainBundle] bundlePath]; 
NSString *ImagePath = [Path stringByAppendingPathComponent:logoName]; 
UIImage *tempImg = [[UIImage alloc] initWithContentsOfFile:ImagePath]; 
[showLogo setImage:tempImg]; 
[tempImg release]; 
[self masterView]; 

} 

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation 
{ 
return YES; 
} 

- (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration 
{ 
isLandscape = UIInterfaceOrientationIsLandscape(toInterfaceOrientation); 
if(isLandscape = YES){ 
[self layoutSubviews]; 

} 

} 





- (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 { 
[logoName release]; 
[showLogo release]; 
[showDescription release]; 
[showDescriptionInfo release]; 
    [super dealloc]; 
} 


@end 

回答

0

我相信你需要将-shouldAutorotateToInterfaceOrientation:方法传递给每个视图控制器。你可以在你的UITabBarController中做这样的事情:

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation) 
      interfaceOrientation 
{ 
    for (UIViewController *viewController in [ self viewControllers ]) 
     [ viewController 
      shouldAutorotateToInterfaceOrientation:interfaceOrientation ]; 

    return YES; 
} 
相关问题