2015-05-26 2 views
0

Я новичок в iOS и используя нижеследующий код для отображения панели инструментов. такой же код работает для других экранов.Панель инструментов не отображается в iOS

У меня есть отладка кода, и он переходит в метод show toolbar и завершает метод viewDidLoad без каких-либо исключений. то и панель инструментов не подходит ..

Но это не отображается панель инструментов в UI..Please помочь мне решить вопрос ...

Ниже приводится код реализации.

@implementation HistoryViewController 

    @synthesize wasLandscape; 

    - (HistoryViewController *)init { 
    if (self = [super init]) { 
     //Set App Delegate 
     appDelegate = [[UIApplication sharedApplication] delegate]; 

     //Set up an encyclopedia object for me 
     encBook = [[Encyclopedia alloc] init]; 
     [[appDelegate prefsdb] loadHistoryEncyclopedia:encBook]; 
    } 

    return self; 
} 

    // Override to allow orientations other than the default portrait orientation. 
    - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { 
    // Return YES for supported orientations 
    return YES; 
} 

    //Handle appearance 
    - (void) didRotateFromInterfaceOrientation:   (UIInterfaceOrientation)interfaceOrientation 
{ 
//Kill the old, make the new 
    [self hideToolbar]; 
    [self showToolbar]; 
} 

    //Handle appear include Toolbar 
    - (void)viewWillAppear:(BOOL)animated { 
    [self showToolbar]; 
    [super viewWillAppear:animated]; 
} 

//Remove the toolbar if we are disappearing 
- (void)viewWillDisappear:(BOOL)animated { 
    [self hideToolbar]; 
    [super viewWillDisappear:animated]; 
} 


//Destroy the toolbar 
- (void) hideToolbar { 
    if(toolbar != nil){ 
     //Remove what we added 
     [toolbar removeFromSuperview]; 
     [toolbar release]; 
     toolbar = nil; 
    } 
} 


//Make the toolbar 
- (void) showToolbar { 
    BOOL landscape = (self.interfaceOrientation == UIDeviceOrientationLandscapeLeft || self.interfaceOrientation == UIDeviceOrientationLandscapeRight); 

    // double check 
    if (!landscape) { 
     if (wasLandscape) { 
      landscape = YES; 
      wasLandscape = NO; 
     } 
    } 

    //iOS4 accomodation 
    if(toolbar != nil){ 
     [toolbar removeFromSuperview]; 
     [toolbar release]; 
     toolbar = nil; 
    } 

    //Initialize the toolbar ----------------------------------------------------------- 
    toolbar = [[UIToolbar alloc] init]; 
    toolbar.barStyle = UIBarStyleDefault; 

    //Set the toolbar to fit the width of the app. 
    [toolbar sizeToFit]; 

    //Caclulate the height of the toolbar 
    CGFloat toolbarHeight = [toolbar frame].size.height; 

    //Get the bounds of the parent view 
    CGRect rootViewBounds = self.parentViewController.view.bounds; 

    //Get the height of the parent view. 
    CGFloat rootViewHeight = CGRectGetHeight(rootViewBounds); 

    //Get the width of the parent view, 
    CGFloat rootViewWidth = CGRectGetWidth(rootViewBounds); 

    //Create a rectangle for the toolbar 
    CGRect rectArea = CGRectMake(0, rootViewHeight - toolbarHeight, rootViewWidth, toolbarHeight); 

    //Reposition and resize the receiver 
    [toolbar setFrame:rectArea]; 

    // create buttons 

    UIBarButtonItem *bookmarkButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemBookmarks target:self action:@selector(showBookmarks:)]; 
    //bookmarkButton.TintColor = [UIColor colorWithRed:0.0 green:0.31 blue:0.56 alpha:1.0]; 
    // for spacing 
    UIBarButtonItem *fixer1 = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFixedSpace target:nil action:nil]; 
    UIBarButtonItem *fixer2 = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFixedSpace target:nil action:nil]; 
    UIBarButtonItem *fixer3 = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFixedSpace target:nil action:nil]; 
    UIBarButtonItem *fixer4 = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFixedSpace target:nil action:nil]; 

    if (!landscape) { 
     fixer1.width = 32; 
     fixer2.width = 32; 
     fixer3.width = 32; 
     fixer4.width = 32; 
    } else { 
     fixer1.width = 78; 
     fixer2.width = 78; 
     fixer3.width = 78; 
     fixer4.width = 78; 
    } 

    [toolbar setItems:[NSArray arrayWithObjects:fixer4, bookmarkButton, nil]]; 


    //Add the toolbar as a subview to the navigation controller. 
    [self.navigationController.view addSubview:toolbar];  

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

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

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    // The method hideStatusbar called after 2 seconds 
    [self showToolbar]; 
    // Do any additional setup after loading the view, typically from a nib. 
} 

@end 
+0

У кого-нибудь есть решение моей проблемы? – Anjali

ответ

0

использованием CGRect rootViewBounds = [UIScreen] В начало .bounds; решил проблему.

0

попробовать это

[self.navigationController setToolbarHidden:NO animated:NO]; 
+0

попробовал добавить выше строку в шоу toolbar method .... didnt help .... – Anjali