IOS Swift Программный UITabBar
Я пытаюсь создать и использовать UITabBar в IOS. Мой код генерирует 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);
Вот вид из кода выше
Вопрос
Как заставить это работать, 100% программно? Когда я нажимаю на вкладку, я хотел бы ответить с изменением вкладки!
Спасибо:)
1 ответ
Благодаря помощи 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;
}
Спасибо, мистер Т!!!!!!!:)