2012-05-07 6 views
6

私はidev-recipes/RaisedCenterTabBarを使用していますが、カメラではなく中央ボタンから呼び出されるモーダルビューが必要です。iosタブバーボタンからモーダルビュー

コードはここにある:この作業を取得する方法について https://github.com/boctor/idev-recipes/tree/master/RaisedCenterTabBar

任意のアイデア?

+0

はい、 'UITabBar'のボタンをタップしてモーダルビューを表示することは可能です。あなたはあなたの質問をより具体的にする必要があります。 –

+0

ビット... – stewart715

答えて

2

私はUITabBarControllerの独自のサブクラスを作成し、この方法で追加します。

- (void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item { 

} 

あなたが選択して、そこに内部のモーダルVCをインスタンス化したもののアイテム伝えることができるようになります。

+0

を更新しました。現在のVCはタブバーの項目に接続されていますか?これは無視されるのですか、またはタブバー項目を保持したまま削除することはできますか? – stewart715

+0

私はあなたがそれを無視することができると思います。それは削除することはできません(TabBarControllerはすべてのタブにVCが必要です)。 –

+7

しかし、私はモーダルを開いてもVCの背後にスイッチが入りません。それを無視してデフォルトアクションを表示しないようにするにはどうすればよいですか? – stewart715

0

おそらくUITabBarDelegate
- (void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item
という方法を使用できます。
誰かがタブバーのボタンを押すと、デリゲートにメソッドが送信されます。そこには、それが右のボタンであるかどうかを確認してから、モーダルビューコントローラをインスタンス化することができます。

0

サブクラス化またはデリゲートを使用することで、選択した項目が中央ボタンであるかどうかを確認し、そうであれば、タブバーに以前に選択した項目を選択してモデルビューコントローラーを表示させることができます。元の選択が起こったのと同じRunLoopソース内でこれを実行するので、中間のVCに切り替えることなくタブ選択が効果的に元に戻されます。

0

あなた=> https://github.com/boctor/idev-recipes/tree/master/RaisedCenterTabBar

によって提供されたコードのサンプルによると、中央のタブボタンを上げたが、これだけBaseViewController.mクラスでこのよう

[button addTarget:self action:@selector(showmodalview) forControlEvents:UIControlEventTouchUpInside]; 
をそのボタンの動作を設定し、UIButtonです

その後、showmodalview方法このコードを書く=>

-(void)showmodalview 
{ 
    UIViewController *view1=[[UIViewController alloc] init]; // you can use any view controller instance you want ,this is just the example. 
    [self presentModalViewController:view1 animated:YES]; 
} 
4

にするために従うより良いアプローチがありますそれを達成する。そしてはるかに簡単です。

この方法を使用して実装することによってわかったことは、https://github.com/boctor/idev-recipes/tree/master/RaisedCenterTabBarは、タブバーを非表示にしようとしているときに奇妙なことが起きていることです。あなたにとって私が見つけた最良の解決策(あなたと同じこと)はここにあります:http://www.lantean.co/display-a-modal-uiviewcontroller-when-a-uitabbaritem-is-pressed/

他に何もする必要はありません。 UITabBarItemが関連付けられているビューコントローラを無視し、モーダルビューを表示してください。それで全部です!

関連する問題