Я хочу создать iOS UITabBarController с 6 дочерними контроллерами представления, которого достаточно, чтобы вызвать вкладку «Еще» на iPhone 11 Pro Max в портретной ориентации. В качестве эксперимента я хотел бы сделать это программно в Swift, не внося никаких изменений в файл Main.storyboard моего проекта Xcode. Ниже приведен весь мой файл ViewController.swift с использованием Xcode 11.5 по умолчанию «Приложение для одного просмотра» в macOS Catalina 10.15.4.
import UIKit;
class ViewController: UITabBarController {
override func viewDidLoad() {
super.viewDidLoad();
// Do any additional setup after loading the view.
struct Band {
let badge: String;
let color: UIColor;
let systemItem: UITabBarItem.SystemItem;
}
let bands: [Band] = [
Band(badge: "0", color: .red, systemItem: .bookmarks),
Band(badge: "1", color: .orange, systemItem: .contacts),
Band(badge: "2", color: .yellow, systemItem: .downloads),
Band(badge: "3", color: .green, systemItem: .favorites),
Band(badge: "4", color: .blue, systemItem: .featured),
Band(badge: "5", color: .purple, systemItem: .history)
];
let kids: [UIViewController] = bands.map {
let viewController: UIViewController = UIViewController();
viewController.tabBarItem = UITabBarItem(tabBarSystemItem: $0.systemItem, tag: Int($0.badge)!);
viewController.tabBarItem.badgeValue = $0.badge;
viewController.view.backgroundColor = $0.color;
return viewController;
}
//Make sure all 6 kids are present and okay.
kids.forEach {print($0.tabBarItem.tag, $0.tabBarItem.badgeValue!);}
setViewControllers(kids, animated: true); //Why only getting 4 of 6 in portrait?
print("viewControllers!.count = \(viewControllers!.count)");
}
}
viewControllers! .Count должно быть 6. Но когда я запускаю на iPhone 11 Симулятор Pro Max в портретной ориентации, viewControllers! .Count равен 4, и я вижу вкладки только для первых 4 дочерних элементов, без вкладки «Еще». (Когда я запускаю проект на симуляторе iPhone 11 Pro Max, который уже находится в альбомной ориентации, viewControllers! .Count равен 6, и я вижу вкладки для всех 6 дочерних элементов.) То же самое происходит с моим iPhone 8 Plus. симулятор. Почему я получаю только 4 из 6 без «Больше» в портретной ориентации, и можно ли сделать то, что я пытаюсь сделать, просто изменив файл ViewController.swift? Заранее спасибо.