快速添加没有标签栏控制器的标签栏 [英] add tab bar without tab bar controller in swift

查看:30
本文介绍了快速添加没有标签栏控制器的标签栏的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我需要在没有标签栏控制器的情况下在我的视图中添加一个标签栏,因为在我的 prepareForSegue 函数中,我将数据传递给包含标签栏的视图.

I need to add an tab bar in my view with out tab bar controller, because in my prepareForSegue function I pass data to my view whitch contains the tab bar.

我从对象库中添加标签栏及其项目,并在我的视图类中添加 UITabBarDelegate.我的代码是这样的:

I add the tab bar from the object library with its items, and in my view class I add UITabBarDelegate. my code is like this:

class SchedaCompletaVC: UIViewController, UITabBarDelegate {

var event:Event! // data passing from prepareforsegue

@IBOutlet var mainTabBar:UITabBar!
var descrizioneTab:UIViewController! //if i click on first tab, so my default view 
var mappaTab:UIViewController! // second tab

override func viewDidLoad() {
    super.viewDidLoad()
    println("event \(event.eventId)")

    // Do any additional setup after loading the view.
}

func tabBar(tabBar: UITabBar, didSelectItem item: UITabBarItem!) {
    switch (item.tag) {
    case 1:
        self.view.insertSubview(descrizioneTab.view.belowSubview(mainTabBar)) //here I had error
       break;
    case 2:
        //if second tab is selected
        break;
    default:
        break;
    }
}

我从 教程 是针对objective-c 的,我尝试将其快速转换.

I got this code from an tutorial whitch is for objective-c, I tried to convert it in swift.

我的代码不起作用,我不知道该怎么办?

My code doesn't work, I don't know what to do?

请帮忙.谢谢!

更新:我的故事板是这样的:

Update: my storyboard is like this:

推荐答案

这是 swift 版本 :-

Here is the swift version :-

import UIKit

class ViewController: UIViewController, UITabBarDelegate {

    @IBOutlet weak var mainTabBar: UITabBar!

    var viewController1: UIViewController?
    var viewController2: UIViewController?


    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }

    func tabBar(tabBar: UITabBar, didSelectItem item: UITabBarItem!) {

        switch item.tag {

        case 1:
            if viewController1 == nil {

                var storyboard = UIStoryboard(name: "Main", bundle: nil)
                viewController1 = storyboard.instantiateViewControllerWithIdentifier("ViewController1") as! ViewController1
        }
            self.view.insertSubview(viewController1!.view!, belowSubview: self.mainTabBar)
            break


        case 2:
            if viewController2 == nil {

                var storyboard = UIStoryboard(name: "Main", bundle: nil)
                viewController2 = storyboard.instantiateViewControllerWithIdentifier("ViewController2") as! ViewController2
        }
            self.view.insertSubview(viewController2!.view!, belowSubview: self.mainTabBar)
            break

        default:
            break

        }


    }


}

然后你应该点击 UITabBarItem &ctrl 将其拖到 viewcontroller 并单击委托.

Then you should click the UITabBarItem & ctrl drag it to viewcontroller and click delegate.

标签栏项目的标签(第一个标签项目标签为1,第二个标签项目标签为2)

Tag for Tab Bar Item( for first tab item tag is 1, for second tab item, tag is 2)

ViewController 的 StoryBoard 标识符(分别为 ViewController1 和 ViewController2)

StoryBoard identifier for ViewController(ViewController1 and ViewController2, Respectively)

这篇关于快速添加没有标签栏控制器的标签栏的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆