Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 在swift中添加不带选项卡栏控制器的选项卡栏_Ios_Swift_Tabbar - Fatal编程技术网

Ios 在swift中添加不带选项卡栏控制器的选项卡栏

Ios 在swift中添加不带选项卡栏控制器的选项卡栏,ios,swift,tabbar,Ios,Swift,Tabbar,我需要在没有选项卡栏控制器的情况下在视图中添加选项卡栏,因为在我的prepareforsgue函数中,我将数据传递到包含选项卡栏的视图 我从对象库及其项中添加选项卡栏,并在视图类中添加uitabardelegate。 我的代码如下: class SchedaCompletaVC: UIViewController, UITabBarDelegate { var event:Event! // data passing from prepareforsegue @IBOutlet var ma

我需要在没有选项卡栏控制器的情况下在视图中添加选项卡栏,因为在我的
prepareforsgue
函数中,我将数据传递到包含选项卡栏的视图

我从对象库及其项中添加选项卡栏,并在视图类中添加uitabardelegate。 我的代码如下:

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的whitch那里得到了这个代码,我试着用swift转换它

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

请帮忙。谢谢大家!

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

我有一个Objective-C解决方案。它很好用,你可以把它转换成Swift

ViewController.h文件代码

        #import <UIKit/UIKit.h>
        @interface ViewController : UIViewController<UITabBarDelegate>
        @property (weak, nonatomic) IBOutlet UITabBar *mainTabBar;

        @end
别忘了

1) 选项卡栏项的标记(第一个选项卡项的标记为1,第二个选项卡项的标记为2)

2) ViewController的情节提要标识符(分别为第一个和第二个)


以下是swift版本:-

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,然后单击“委派”

选项卡栏项的标记(第一个选项卡项的标记为1,第二个选项卡项的标记为2)


ViewController的情节提要标识符(分别为ViewController1和ViewController2)

什么是“我的代码不工作”的确切含义?您将链接代码转换为Swift的尝试只完成了一半。。。你真的想知道它不起作用吗?我是编程新手,你能告诉我我错过了什么吗?你是在使用故事板吗?我不能清楚地理解你的问题,你能正确地解释一下吗?有没有办法在每次不创建视图控制器的新实例的情况下实现这一点?
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

        }


    }


}