IOS UISegmentedControl不';不在ios 10中显示

IOS UISegmentedControl不';不在ios 10中显示,ios,swift,xcode,uisegmentedcontrol,Ios,Swift,Xcode,Uisegmentedcontrol,我是IOS的初学者。我正在开发一个Swift应用程序,我正在使用UISegmentedControl。它在ios 11中显示良好,但当我在ios 10设备上运行我的应用程序时,分段控件不会显示。有人知道为什么吗 分段控件是否仅在IOS 11中可用 以下是我的应用程序截图(抱歉,我还不能发布图片): IOS 11 损失10 这是我的SegmentedViewController.swift: import UIKit import MMDrawerController class Segme

我是IOS的初学者。我正在开发一个Swift应用程序,我正在使用UISegmentedControl。它在ios 11中显示良好,但当我在ios 10设备上运行我的应用程序时,分段控件不会显示。有人知道为什么吗

分段控件是否仅在IOS 11中可用

以下是我的应用程序截图(抱歉,我还不能发布图片):

IOS 11

损失10

这是我的SegmentedViewController.swift:

import UIKit
import MMDrawerController

class SegmentedViewController: UIViewController {

@IBOutlet weak var viewContainer: UIView!

var segmentedController: UISegmentedControl!
var floorRequest:Int = 0
var segmentedControlIndex:Int = 0

lazy var travelViewController: TravelViewController = {
    var viewController = self.initTravelViewController()

    return viewController
}()

lazy var nearbyViewController: NearbyTableViewController = {
    let storyboard = UIStoryboard(name: "Main", bundle: Bundle.main)

    var viewController = storyboard.instantiateViewController(withIdentifier: "NearbyTableViewController") as! NearbyTableViewController

    self.addViewControllerAsChildViewController(childViewController: viewController)

    return viewController
}()

var views: [UIView]!

let appDelegate:AppDelegate = UIApplication.shared.delegate as! AppDelegate


func initTravelViewController() -> TravelViewController {
    let storyboard = UIStoryboard(name: "Main", bundle: Bundle.main)

    let viewController = storyboard.instantiateViewController(withIdentifier: "TravelViewController") as! TravelViewController

    viewController.floorRequest = floorRequest

    self.addViewControllerAsChildViewController(childViewController: viewController)

    return viewController
}


override func viewDidLoad() {
    super.viewDidLoad()

    segmentedController = UISegmentedControl()
    navigationItem.titleView = segmentedController

    self.title = "TAB_BAR_MAP".localized()

}

override func viewWillAppear(_ animated: Bool) {
    self.tabBarController?.navigationItem.title = "MENU_SECTION_TRAVEL".localized().uppercased()

    // Navigation Bar
    self.navigationController?.navigationBar.titleTextAttributes = [NSForegroundColorAttributeName : UIColor.white, NSFontAttributeName: UIFont(name: "Lato-Bold", size: 18)!]
    self.navigationController?.navigationBar.tintColor = .white
    self.navigationController?.navigationBar.barTintColor = appDelegate.colorAqaDark
    self.navigationController?.navigationBar.isTranslucent = false
    self.navigationItem.backBarButtonItem = UIBarButtonItem(title: "", style: .plain, target: nil, action: nil)

    if (self.navigationController?.viewControllers.count)! < 2 {
        let buttonLeft: UIButton = appDelegate.aqaBarButton(image: #imageLiteral(resourceName: "IconWhiteMenu"))
        buttonLeft.addTarget(self, action: #selector(toggleMenu), for: .touchUpInside)
        buttonLeft.frame = CGRect.init(x: 0, y: 0, width: 25, height: 25)
        let buttonMenu = UIBarButtonItem(customView: buttonLeft)
        self.navigationItem.setLeftBarButton(buttonMenu, animated: false);
    }

    setupView()
    super.viewWillAppear(animated)
}

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

func toggleMenu() {
    appDelegate.mainContainer!.toggle(MMDrawerSide.left, animated: true, completion: nil)
}

private func setupView(){
    setupSegmentedControl()

    updateView()
}

private func updateView(){
    travelViewController.view.isHidden = !(segmentedController.selectedSegmentIndex == 0)
    nearbyViewController.view.isHidden = (segmentedController.selectedSegmentIndex == 0)
    segmentedControlIndex = segmentedController.selectedSegmentIndex
}

private func setupSegmentedControl(){

    segmentedController.removeAllSegments()
    segmentedController.insertSegment(withTitle: "TAB_BAR_MAP".localized(), at: 0, animated: false)
    segmentedController.insertSegment(withTitle: "TAB_BAR_NEARBY".localized(), at: 1, animated: false)
    segmentedController.addTarget(self, action: #selector(selectionDidChange(sender:)), for: .valueChanged)

    segmentedController.selectedSegmentIndex = segmentedControlIndex
}

func selectionDidChange(sender: UISegmentedControl){
    updateView()
}

private func addViewControllerAsChildViewController(childViewController: UIViewController){
    addChildViewController(childViewController)
    view.addSubview(childViewController.view)

    childViewController.view.frame = view.bounds
    childViewController.view.autoresizingMask = [.flexibleWidth, .flexibleHeight]

    childViewController.didMove(toParentViewController: self)
}
}
导入UIKit
导入MMDrawerController
类SegmentedViewController:UIViewController{
@ibvar-viewContainer:UIView!
var分段控制器:UISegmentedControl!
var floorRequest:Int=0
var分段控制索引:Int=0
lazy var travelViewController:travelViewController={
var viewController=self.initTravelViewController()
返回视图控制器
}()
惰性变量nearbyViewController:NearbyTableViewController={
让故事板=UIStoryboard(名称:“Main”,bundle:bundle.Main)
var viewController=storyboard.instanceeviewcontroller(标识符为:“NearbyTableViewController”)作为!NearbyTableViewController
self.addViewControllerAsChildViewController(childViewController:viewController)
返回视图控制器
}()
变量视图:[UIView]!
让appDelegate:appDelegate=UIApplication.shared.delegate作为!appDelegate
func initTravelViewController()->TravelViewController{
让故事板=UIStoryboard(名称:“Main”,bundle:bundle.Main)
让viewController=storyboard.InstanceEviewController(标识符为:“TravelViewController”)作为!TravelViewController
viewController.floorRequest=floorRequest
self.addViewControllerAsChildViewController(childViewController:viewController)
返回视图控制器
}
重写func viewDidLoad(){
super.viewDidLoad()
segmentedController=UISegmentedControl()
navigationItem.titleView=分段控制器
self.title=“TAB\u BAR\u MAP”。本地化()
}
覆盖函数视图将出现(uo动画:Bool){
self.tabBarController?.navigationItem.title=“MENU\u SECTION\u TRAVEL”.localized().大写()
//导航栏
self.navigationController?.navigationBar.titleTextAttributes=[NSForegroundColorAttributeName:UIColor.white,NSFontAttributeName:UIFont(名称:“Lato Bold”,大小:18)!]
self.navigationController?.navigationBar.tintColor=.white
self.navigationController?.navigationBar.barTintColor=appDelegate.colorAqaDark
self.navigationController?.navigationBar.isTranslucent=false
self.navigationItem.BackBarButtonim=UIBarButtonim(标题:,样式:。普通,目标:nil,操作:nil)
if(self.navigationController?.viewControllers.count)!<2{
let buttonLeft:UIButton=appDelegate.aqaBarButton(图像:#imageLiteral(资源名称:“IconWhiteMenu”))
buttonLeft.addTarget(self,action:#选择器(切换菜单),用于:。touchUpInside)
buttonLeft.frame=CGRect.init(x:0,y:0,宽度:25,高度:25)
let buttonMenu=UIBarButtonItem(自定义视图:buttonLeft)
self.navigationItem.setLeftBarButton(按钮菜单,动画:false);
}
setupView()
超级。视图将显示(动画)
}
重写函数didReceiveMemoryWarning(){
超级。我收到了记忆警告()
//处置所有可以重新创建的资源。
}
功能切换菜单(){
appDelegate.mainContainer!.toggle(MMDrawerSide.left,动画:true,完成:nil)
}
私有函数设置视图(){
setupSegmentedControl()
updateView()
}
私有函数更新视图(){
travelViewController.view.isHidden=!(segmentedController.selectedSegmentIndex==0)
nearbyViewController.view.isHidden=(segmentedController.selectedSegmentIndex==0)
segmentedControlIndex=segmentedController.selectedSegmentIndex
}
专用函数setupSegmentedControl(){
segmentedController.removeAllSegments()
segmentedController.insertSegment(标题为:“TAB\u BAR\u MAP.”本地化(),位置:0,动画:false)
segmentedController.insertSegment(标题为:“TAB\u BAR\u Nearly.”本地化(),位置:1,动画:false)
segmentedController.addTarget(self,action:#选择器(selectionDidChange(sender:)),for:.valueChanged)
segmentedController.selectedSegmentIndex=segmentedControlIndex
}
func selectionDidChange(发送方:UISegmentedControl){
updateView()
}
专用func addViewControllerAsChildViewController(childViewController:UIViewController){
addChildViewController(childViewController)
view.addSubview(childViewController.view)
childViewController.view.frame=view.bounds
childViewController.view.autoresizingMask=[.flexibleWidth、.flexibleHeight]
childViewController.didMove(toParentViewController:self)
}
}

问题在于您没有为分段控件提供任何大小。在iOS 11中,标题视图是通过自动布局在内部调整大小的,但在iOS 10或之前的版本中不是这样。因此,您将得到一个零大小的分段控件

您没有给分段控件任何大小。非常感谢。它起作用了。我不知道你必须设置它的大小。在ios 11中,它不需要设置就可以工作。在ios 11中,它的大小由自动布局决定。但不是以前。好吧,我现在明白了。在IOS开发方面,我还有很多东西要学。非常感谢你真的救了我一天。