Search code examples
iphoneiosxcodeuitabbarcontrolleruiactionsheet

How to call segue after tapping uiactionsheet in tabbarbutton


will like to know how to call segue after i show an actionsheet in tabbarbutton.

i did all this in the app delegate, if appdelegate is not a good place to do it. where shall i add those line of code to ?

- (BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController {

    NSInteger choice = 1; // --> index of the view controller that should "act as button"
    if (viewController == [tabBarController.viewControllers objectAtIndex:choice])

        { 
            UIActionSheet *sheet = [[UIActionSheet alloc] initWithTitle:nil 
                                                               delegate:self
                                                      cancelButtonTitle:@"Cancel" 
                                                 destructiveButtonTitle:Nil 
                                                      otherButtonTitles:@"000", @"Car Accident",@"Home",@"Property", nil];
            sheet.tag = 0;
            sheet.title=@"test";
            NSLog(@"tab tab");
                [sheet showInView:self.window];
                return NO;

    }


    NSLog(@"YES YES");
    return YES;
}


- (void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex {
     if(actionSheet.tag == 0)
    {

            if (buttonIndex == 0)
            {
                UIDevice *device = [UIDevice currentDevice];

                if ([[device model] isEqualToString:@"iPhone"])
                {
                    [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"telprompt:000"]];

                } else
                {
                    UIAlertView *Notpermitted=[[UIAlertView alloc] initWithTitle:@"Alert" message:@"Your device doesn't support this feature." delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil];
                    [Notpermitted show];
                }


            }
            else if (buttonIndex == 1)
            {
              NSLog(@"Car Accident");
                //tried to call a segue here.

            }
            else if (buttonIndex == 2)
            {

               NSLog(@"YES YES"); 
            }
            else if (buttonIndex == 3)
            {
               NSLog(@"YES YES"); 

            }
        }
}

Thanks for reading and comments.


Solution

  • - (void)viewDidLoad
    {
        [super viewDidLoad];
    
        AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
    
        // Do any additional setup after loading the view.
        UITabBarController *tabController = (UITabBarController *)appDelegate.window.rootViewController;
        tabController.selectedIndex = 0;
        tabController.delegate = self;
    }
    
    - (BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController {
    
        NSInteger choice = 1; // --> index of the view controller that should "act as button"
        if (viewController == [tabBarController.viewControllers objectAtIndex:choice])
    
        {
            UIActionSheet *sheet = [[UIActionSheet alloc] initWithTitle:nil
                                                               delegate:self
                                                      cancelButtonTitle:@"Cancel"
                                                 destructiveButtonTitle:Nil
                                                      otherButtonTitles:@"000", @"Car Accident",@"Home",@"Property", nil];
            sheet.tag = 0;
            sheet.title=@"Emergency";
            NSLog(@"tab tab");
    
            [sheet showInView:[self.view superview]];
            return NO;
    
        }
    
    
        NSLog(@"YES YES");
        return YES;
    }
    
    
    - (void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex {
        if(actionSheet.tag == 0)
        {
    
            if (buttonIndex == 0)
            {
                UIDevice *device = [UIDevice currentDevice];
    
                if ([[device model] isEqualToString:@"iPhone"])
                {
                    [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"telprompt:000"]];
    
                } else
                {
                    UIAlertView *Notpermitted=[[UIAlertView alloc] initWithTitle:@"Alert" message:@"Your device doesn't support this feature." delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil];
                    [Notpermitted show];
                }
    
    
            }
            else if (buttonIndex == 1)
            {
                NSLog(@"Car Accident");
                [self performSegueWithIdentifier:@"pushToCarView" sender:self];
    
            }
            else if (buttonIndex == 2)
            {
    
                NSLog(@"YES YES");
            }
            else if (buttonIndex == 3)
            {
                NSLog(@"YES YES");
    
            }
        }
    }