2012-05-07 81 views

回答

2

我想創建自己的UITabBarController的子類,然後在這個方法中添加:

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

} 

您將能夠告訴被選擇的項目,然後實例化一個模態VC在裏面。

+0

當前VC附加到標籤欄中的項目呢?這是被忽略,還是我可以刪除它,同時保持標籤欄項目? – stewart715

+0

我認爲你可以忽略它。它不能被刪除(TabBarController需要爲每個選項卡都有一個VC)。 –

+7

但是,當我打開模式不會切換後面的VC,然後完成模式顯示空白VC?我如何才能讓它忽略它而不呈現默認操作? – stewart715

0

也許你可以只使用UITabBarDelegate,與
- (void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item
方法。
當某人按下標籤欄中的按鈕時,該方法被髮送到委託。在那裏你可以檢查它是否是正確的按鈕,然後實例化模態視圖控制器。

0

要麼通過子類別或通過使用委託,您可以簡單地檢查所選項目是否是您的中間按鈕,如果是,請讓選項卡欄選擇之前選定的項目,然後呈現您的模型視圖控制器。由於您將在原始選擇發生的同一個RunLoop源代碼中執行此操作,因此無需切換到中間VC即可有效撤消選項卡選擇。

0

根據你所提供的代碼示例=> https://github.com/boctor/idev-recipes/tree/master/RaisedCenterTabBar

中央凸起標籤按鈕是一個UIButton,所以只需設置像這樣的按鈕的在BaseViewController.m類的動作

[button addTarget:self action:@selector(showmodalview) forControlEvents:UIControlEventTouchUpInside]; 

然後在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關聯的視圖控制器並展示您的模態視圖!就這樣!