我想找到一種方法來使TabBar的項目充當「UIbutton」。 我想當按這個項目只是使其作爲ibaction方法工作。連接到ibaction的Tabbar項目
我嘗試了幾種實現爲:
-(void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item{
}
但我沒能拿到方法工作。
什麼是最好的解決方案,僞造一個tabbar的項目功能,並打開一個UIActionSheet例如?
我想找到一種方法來使TabBar的項目充當「UIbutton」。 我想當按這個項目只是使其作爲ibaction方法工作。連接到ibaction的Tabbar項目
我嘗試了幾種實現爲:
-(void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item{
}
但我沒能拿到方法工作。
什麼是最好的解決方案,僞造一個tabbar的項目功能,並打開一個UIActionSheet例如?
在所選標籤欄項目視圖的viewDidLoad
方法中調用您的操作方法。
您可以嘗試tabBarController shouldSelectViewController委託方法。覆蓋這個。在要顯示ActionSheet的選項卡上返回NO,而是在此方法中實例化ActionSheet。
您將需要一個佔位符UIViewController來替代此選項卡。
如上所述,這違反了Apple HIG,可能是您的應用遭到拒絕的原因。
看看這個!這些人創建了一個帶有uibutton的tabBar! http://idevrecipes.com/2010/12/16/raised-center-tab-bar-button/
完整的源代碼: https://github.com/boctor/idev-recipes/tree/master/RaisedCenterTabBar
我試過代碼前一段時間,它爲我工作。
嘗試在您的viewController中使用IBOutlet和UITabBarDelegate。
@interface MyViewController : UIViewController <UITabBarDelegate> {
IBOutlet UITabBar* tabBar;
}
@end
將UITabBar連接到Interface Builder中的IBOutlet。
將委託給你的viewController的viewDidLoad方法「自我」:
-(void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view.
tabBar.delegate = self;
}
,併成立了委託方法用一些方法來區分標籤:
-(void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item
{
NSLog(item.title);
if([item.title isEqualToString:@"some label"]) {
// do something for this specific button
}
}
(這是一個老但是我有同樣的問題,希望這可以節省別人同樣的麻煩。)
您是否分配了標籤欄代表? – 2012-08-14 15:49:55
我懷疑你是否會堅持HCI的指導方針,做你正在做的事,但嘿,這是你的設計! – Ravi 2012-08-14 15:53:03