open viewcontroller from tab like in instagram cam

2020-02-05 05:40发布

问题:

what i want is suppose to be simple, instagram middle tab on IOS opens the app's camera interface but not like the rest of the tabs but as an independet view controller and when you press cancel it gets back to the last tab youv'e been.

any ideas??

回答1:

Edit: In order for this code to work you'll need to subclass UITabBarController and implement the UITabBarDelegate. So you'll add something like this:

@interface MyTabsViewController : UITabBarController <UITabBarDelegate>

In Interface Builder you'll need to set the tags of your tab items to whatever you need them to be:

And now you can do something like this:

-(void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item
{
    if(item.tag == 1)
    {
        [self presentViewController:myVC animated:YES completion:nil];
    }
    else if(item.tag == 2)
    {
       //your code
    }
}

This will allow you to get the tapped event for each of your tab bar items and do add some custom code, you just need to add the appropriate tags to your tab buttons in interface builder. For example, you could add code to show your own view controller as shown above.

Hope that helps!

And here's another link: How can i get Tabbar Item Button's Click event by clicking on TabbarItem button?



回答2:

Sounds like what you're trying to do involves a TabBarViewController. You can start a project off by choosing this option from the Xcode welcome screen to create a new project:

This "Tabbed Application" starter project will give you a fully functional and running app you can build from.

The way you're describing the tab bar controller in Instagram sounds like you'll have to do a couple customizations to your tab bar controller. First, the camera tab in the middle has a blue background. Try this SO article to help with that.

When you hit the cancel button on the camera page and you want the last selected tab to be selected use this method as a starting place to programatically select a certain tab:

[self.tabBarController setSelectedIndex:2];

Hope this gets you started in the right direction.



回答3:

SWIFT 4 Code

After subclassing the Tabbarcontroller as specified by @erparker above, use this code

 override func tabBar(_ tabBar: UITabBar, didSelect item: UITabBarItem) {
        if(item.tag==300){


            if let viewController = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "addNewTaskView") as? AddNewTaskViewController {

               self.present(viewController, animated: true, completion: nil)
            }

        }
    }

here, "Main" is the storyboard name which contains target view controller and "addNewTaskView" is the view controller storyboard Id given at the storyboard for a view controller.