IOS Swift Programmatic UITabBar

时间:2015-12-17 15:31:40

标签: ios swift uitabbarcontroller uitabbar uitabbaritem

我正在尝试在IOS中创建和使用 UITabBar 。我的代码生成了一个UITabBar但是当我点击一个标签时它会崩溃并出现错误 -

  • (主线程)“主题1:EXC_BAD_ACCESS(代码= 1,地址= 0x18)”

以下是代码,在视图控制器的 viewDidLoad()

中调用
    let v1 : UIView = UIView(frame:self.view.frame);
    let v2 : UIView = UIView(frame:self.view.frame);

    v1.backgroundColor  = UIColor.redColor();
    v2.backgroundColor = UIColor.blueColor();

    let vc1 : UIViewController = UIViewController();
    let vc2 : UIViewController = UIViewController();

    vc1.view = v1;
    vc2.view = v2;

    vc1.title = "View 1";
    vc2.title = "View 2";

    let nav1 : UINavigationController = UINavigationController(rootViewController: vc1);
    let nav2 : UINavigationController = UINavigationController(rootViewController: vc2);

    nav1.delegate = self;
    nav2.delegate = self;

    let tabsArr : [UINavigationController] = [nav1, nav2];

    let main_tab : UITabBarController = UITabBarController();

    main_tab.viewControllers = tabsArr;
    main_tab.delegate = self;

    self.view.addSubview(main_tab.view);

以下是上面代码中的视图

hopeless

问题

如何以编程方式100%实现此功能?当我点击一个标签时,我想回复标签更改!

谢谢:)

1 个答案:

答案 0 :(得分:0)

感谢Mr.T的帮助,我已经解决了!关键是UITabBarController 替换 UIViewController,它不在里面!

以下是 AppDelegate.swift 中的最终解决方案:

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {

    self.window = UIWindow.init(frame: UIScreen.mainScreen().bounds);

    let N : Int = 4;

    for(var i = 0; i < N; i++) {
        print("please?");

        let newView : UIView = UIView();

        let redC   : CGFloat = CGFloat(arc4random_uniform(255))/CGFloat(255);
        let greenC : CGFloat = CGFloat(arc4random_uniform(255))/CGFloat(255);
        let blueC  : CGFloat = CGFloat(arc4random_uniform(255))/CGFloat(255);

        newView.backgroundColor = UIColor(red: redC, green: greenC, blue: blueC, alpha: 1);

        views.append(newView);

        let newViewController : UIViewController = UIViewController();

        newViewController.title = String(format: "View %d", arguments: [i]);

        newViewController.view = newView;

        let newNavC : UINavigationController = UINavigationController(rootViewController: newViewController);

        navs.append(newNavC);
    }

    let main_tab : UITabBarController = UITabBarController();

    main_tab.viewControllers = navs;

    self.window?.rootViewController = main_tab;

    self.window?.makeKeyAndVisible();

    return true;
}

final!

谢谢Mr.T !!!!!!! :)