这个想法。
我正在开发一个基于TabBarController的应用程序。
有以下3个TabBarItems:
我希望TabBarItem“Share”在当前视图中显示一个Action Sheet,而不是更改视图。
我做了什么。
通过以下几行,我可以获得“分享”-TabBarItem点击/触摸。
-(void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item {
if ([item.title isEqualToString:@"Share"]) {
actionSheet = [[UIActionSheet alloc] initWithTitle:@"Share this App" delegate:self cancelButtonTitle:@"Cancle" destructiveButtonTitle:nil otherButtonTitles:@"Share on FaceBook", nil];
actionSheet.actionSheetStyle = UIBarStyleBlackTranslucent;
[actionSheet showInView:[UIApplication sharedApplication].keyWindow];
[actionSheet release];
}
问题。
每次选择“分享”时,都会显示空白视图。
如何阻止TabBarItem加载其视图,只是导致显示操作表?
欢迎并感谢您思考我的问题!
@Christopher A:谢谢你的回复。
将以下代码放在我的“projectAppDelegate.m”中,但在选择tabbaritem时不会调用该方法。
- (BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController {
if ([viewController.title isEqualToString:@"Share"]) {
return NO;
}
return YES;
答案 0 :(得分:0)
tabBarController: shouldSelectViewController:
应该允许您以编程方式设置它。
查看详细信息here。
答案 1 :(得分:0)
这是因为您在[UIApplication sharedApplication].keyWindow
中显示工作表。
试试这个:
[sheet showInView:self.view];
答案 2 :(得分:0)
请勿使用[UIApplication sharedApplication] .keyWindow来显示操作。
将其替换为:
[actionSheet showFromTabBar:self.tabBarController.tabBar];
如果您没有获得tabBarController引用,那么首先获取UItabbarcontroller的引用。
答案 3 :(得分:0)
- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController: (UIViewController *)viewController
{
// UIActionSheet *actionSheet = nil;
switch (tabBarController.selectedIndex) {
case 1:
{
NSLog(@"item 1");
UIActionSheet *shareAS = [[UIActionSheet alloc]
initWithTitle:nil
delegate:self
cancelButtonTitle:@"cancel"
destructiveButtonTitle:nil
otherButtonTitles:@"shareToXX", @"shareToYY",nil];
shareAS.actionSheetStyle = UIActivityIndicatorViewStyleWhite;
shareAS.tag = 1;
[shareAS showInView:self.window];
}
break;
case 2:
{
NSLog(@"item 2");
UIActionSheet *myAS = [[UIActionSheet alloc]
initWithTitle:nil
delegate:self
cancelButtonTitle:@"cancel"
destructiveButtonTitle:nil
otherButtonTitles:@"AAA", @"BBB",@"CCC",@"DDD",nil];
myAS.actionSheetStyle = UIActionSheetStyleBlackOpaque;
myAS.tag = 2;
[myAS showInView:self.window];
}
break;
default:
break;
}
}
希望能帮到你。