从 IOS 上的 Instagram 相机页面中的选项卡打开 viewcontroller

open viewcontroller from tab like in instagram camera page on IOS

我想要的应该是简单的,IOS 上的 instagram 中间选项卡打开应用程序的相机界面,但不像其他选项卡,而是作为一个独立的视图控制器,当您按下取消时它会返回到你去过的最后一个标签。

有什么想法吗??

听起来您尝试做的事情涉及到 TabBarViewController。您可以通过从 Xcode 欢迎屏幕中选择此选项来创建一个新项目来启动一个项目:

这个 "Tabbed Application" 入门项目将为您提供功能齐全的 运行 应用程序,您可以从中进行构建。

您在 Instagram 中描述标签栏控制器的方式听起来像是您必须对标签栏控制器进行一些自定义。首先,中间的相机标签有蓝色背景。尝试 this SO article 来帮助解决这个问题。

当您点击相机页面上的取消按钮并希望最后一个 selected 选项卡被 selected 时,使用此方法作为起点以编程方式 select某些标签:

[self.tabBarController setSelectedIndex:2];

希望这能让您朝着正确的方向开始。

编辑:为了使此代码工作,您需要子类化 UITabBarController 并实现 UITabBarDelegate。所以你要添加这样的东西:

@interface MyTabsViewController : UITabBarController <UITabBarDelegate>

在 Interface Builder 中,您需要将标签项的标签设置为您需要的任何内容:

现在您可以这样做:

-(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
    }
}

这将允许您为每个选项卡栏项目获取点击事件并添加一些自定义代码,您只需要在界面生成器中向选项卡按钮添加适当的标签。例如,您可以添加代码来显示您自己的视图控制器,如上所示。

希望对您有所帮助!

这是另一个 link:How can i get Tabbar Item Button's Click event by clicking on TabbarItem button?

SWIFT4码

按照上面@erparker 的指定对 Tabbarcontroller 进行子类化后,使用此代码

 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)
            }

        }
    }

此处,"Main" 是包含目标视图控制器的故事板名称,"addNewTaskView" 是在视图控制器的故事板中给出的视图控制器故事板 ID。