2012-01-04 8 views
0

ツールバーコントロールをIBから削除しましたが、代わりにスルーコードを作成しようとしました。私はオンラインで見つけた次のコードを試しました。このコードを "viewWillAppear"に書くのではなく、同じUIViewControllerのナビゲーションバーの "bar button item"に自分のコードがあります。プログラムで完了したときにツールバーが表示されない

- (void)viewWillAppear:(BOOL)animated 
{ 
[super viewWillAppear:animated]; 

//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 a button 
UIBarButtonItem *infoButton = [[UIBarButtonItem alloc] initWithTitle:@"back" style:UIBarButtonItemStyleBordered target:self action:@selector(info_clicked:)]; 

[toolbar setItems:[NSArray arrayWithObjects:infoButton,nil]]; 

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

// Instead of adding to a navigation controller (which I don't have), I'm adding directly to the view and is not shown at all. 

// Hiding the tabBar before I show the toolbar  
[self.tabBarController.tabBar setHidden:YES]; 

[self.view addSubview: self.toolbar]; 

私はここで間違っていますか? info_clickedメソッドを使用できるようにする必要がありますか(bar button item click)?

お知らせください。

+0

これはIOSの表示について私の知らないことですが、どのビューサブクラスのデフォルトイニシャライザでもない-initWithFrame: '? – Daniel

答えて

0

これは私の作品....

UIToolbar *toolbar = [[UIToolbar alloc]init]; 
toolbar.frame = CGRectMake(0, 0, self.view.frame.size.width,44); 
UIBarButtonItem *infoButton = [[UIBarButtonItem alloc]initWithTitle:@"back"style:UIBarButtonItemStyleBordered target:self action:@selector(info_clicked:)]; 
[toolbar setItems:[NSArray arrayWithObjects:infoButton,nil]]; 
[self.view addSubview:toolbar]; 
    [toolBar release]; 

また、この方法はinfo_clicked必要があります:ボタンアクションを受信します。もちろん

- (IBAction)info_clicked:(id)sender{ 
    NSLog("clicked info_button"); 
} 
+0

私の問題点を教えてください:私はUITabBarアプリケーションテンプレートを使用しています。最初のビューコントローラーの下部にあるツールバーとツールバーの上部にツールバーを追加して、アプリケーションを拡張しました。必要なのは、ボタンをクリックするだけで、タブバーを非表示にしてツールバーを表示するだけです。私はIBを通じてツールバーを作成しました。何が起こっているのは、タブバーの非表示とツールバーの表示ですが、タブバーが見える大きなスペースがあります。私は以前にタブバーが表示されていたビューの一番下までツールバーを移動したかったのです。なぜそれが達成するのが難しいのか驚いています。助けてください。 – Hema

0
- (void)viewDidLoad 
{ 

    UIBarButtonItem *barItem = [[UIBarButtonItem alloc]initWithTitle:@"SHOW BAR" style:UIBarButtonItemStyleBordered target:self action:@selector(showToolbar:)]; 
    self.navigationItem.rightBarButtonItem = barItem; 


    self.toolbar = [[UIToolbar alloc]init]; 
    self.toolbar.frame = CGRectMake(0, 325, self.view.frame.size.width,44); 
    UIBarButtonItem *infoButton = [[UIBarButtonItem alloc]initWithTitle:@"back"style:UIBarButtonItemStyleBordered target:self action:@selector(info_clicked:)]; 
    [self.toolbar setItems:[NSArray arrayWithObjects:infoButton,nil]]; 
    [self.toolbar setHidden:YES]; 
    [self.view addSubview:self.toolbar]; 

    [super viewDidLoad]; 
    // Do any additional setup after loading the view, typically from a nib. 
} 
- (IBAction)showToolbar:(id)sender{ 
    [self.tabBarController.tabBar setHidden:YES]; 
    [self.toolbar setHidden:NO]; 
    } 

このコードは、ポートレートモードでは、iPhone上で動作します。あなたは、風景やiPadの周りの番号を変更する必要があります...そして、インターフェイスの向きの変更を見てください。

+0

ありがとうございます。画像をご覧ください:http://img85.imageshack.us/img85/421/screenshot20120103at114.pngイメージから、ツールバーがタブバーの背後に隠れていることがわかります。タブバーを非表示にすると、上にツールバーが表示され、大きなスペース(タブバーが表示されている場所)があります。ツールバーをタブバーの正確な位置に移動する必要があります。ツールバーが正しく表示されたら、ラベルを修正する必要があります(1で表示)。タブバーがappdelegate.mのコード(Tabbarアプリテンプレート)から動的に作成されることを伝えたいだけです。あなたのコードを325の代わりに400に変更しました。 – Hema

0

こんにちは友人、このコードはあまりにもあなたを助けるかもしれない...あなたはタブバー自体にツールバーを追加することができますので、

UIToolbar *toolbar = [[UIToolbar alloc]init]; 
    toolbar.frame = CGRectMake(0, 960, self.view.frame.size.width,44); 
    UIBarButtonItem *infoButton = [[UIBarButtonItem alloc]initWithTitle:@"back"style:UIBarButtonItemStyleBordered target:self action:@selector(info_clicked:)]; 
    // [toolbar setBarStyle:UIBarStyleBlackTranslucent]; 
[toolbar setAutoresizesSubviews:YES]; 
[toolbar setAutoresizingMask:UIViewAutoresizingFlexibleWidth]; 
[self.view setAutoresizingMask:UIViewAutoresizingFlexibleWidth]; 
[toolbar setItems:[NSArray arrayWithObjects:infoButton,nil]]; 
[self.tabBarController.view addSubview:toolbar]; 
[self.tabBarController.view bringSubviewToFront:toolbar]; 
[self.tabBarController.tabBar setHidden:YES]; 

が実際にタブバーがビューコントローラの一つであり、偉大な日以前problem.Haveを解決します! !

+0

ありがとう。私は間違いなく試してみます。しかし、これはいかがですか? IBを使用してツールバーとバーボタンの項目を追加し、ナビゲーションバーのボタンをクリックしてスニペットから特定のコードを追加して、ツールバーをtabbarcontrollerのサブビューとして割り当てることはできますか?それはうまくいくのだろうか、コードからすべてをやらなければならないだろうか? Btw、以前リンクした写真を見ましたか? – Hema

+0

私はすでにあなたのスクリーンショットを見ました。私はタブバーのアプリケーションを作成し、プログラムでツールバーを追加します。私はタブバーを分析した後、tabbarの背後にあるタブバーの背後にあるself.viewのサブビューとしてツールバーを追加しているときにも同じ問題に直面しています。このコードを使用してコントローラを表示すると、その中のツールバーが追加されました。[self.tabBarController.view addSubview:toolbar]あなたの成功のために –

+0

私はそれを理解しました。ありがとうございました – Hema

関連する問題