Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/16.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 UITABBARC控制器高度每次减小';它满了_Ios_Swift_Uiviewcontroller_Uitabbarcontroller - Fatal编程技术网

Ios UITABBARC控制器高度每次减小';它满了

Ios UITABBARC控制器高度每次减小';它满了,ios,swift,uiviewcontroller,uitabbarcontroller,Ios,Swift,Uiviewcontroller,Uitabbarcontroller,当我第一次加载应用程序并登录时。一切都很好 但是,当我注销时,请重新登录。我的视线高度降低了。以下是该漏洞的截图: 我还没找到原因。这是一个很难寻求帮助的问题,因为我无法指定导致问题的代码的确切部分。但我会努力的 有问题的设置如下所示: 我有一个containerViewController,有两个ChildViewController、一个菜单和一个UITableController。UIAbbarController有2个UIViewController 为了更好地解释它,这里有一个视觉表

当我第一次加载应用程序并登录时。一切都很好

但是,当我注销时,请重新登录。我的视线高度降低了。以下是该漏洞的截图:

我还没找到原因。这是一个很难寻求帮助的问题,因为我无法指定导致问题的代码的确切部分。但我会努力的

有问题的设置如下所示:

我有一个
containerViewController
,有两个ChildViewController、一个菜单和一个
UITableController
UIAbbarController
有2个
UIViewController

为了更好地解释它,这里有一个视觉表示

_______________________

App Start -> 

NavigationController(rootViewController LandingPageVC)

   LandingPageVC -> push -> SignInVC(this is where I login from)

   SignInVC -> push -> ContainerViewController(this has my UITabBarController and my menu)

   ContainerViewController (sets up my menuTabBarController and menu)

        menuTabBarController (this tabBarController is used to switch out my content from the menu)

        SidePanelViewController (this is my menu)

   ContainerViewController -> push(signing out) -> LandingPageVC

_______________________
下面是在调用成功登录时如何推送containerViewController

let mainTableViewController = ContainerViewController()
mainTableViewController.navigationItem.setHidesBackButton(true, animated: false)
navigationController!.pushViewController(mainTableViewController, animated: true)
menuEnabled = true
下面是从我用来注销的
containerViewController
调用的函数

func signOut() {

    // Set up the landing page as the main viewcontroller again.
    let mainTableViewController = LandingPageVC()
    mainTableViewController.navigationItem.setHidesBackButton(true, animated: false)
    mainTableViewController.skipView = false
    self.navigationController!.pushViewController(mainTableViewController, animated: true)

    // Disable menu access
    menuEnabled = false
}
通过打印ContainerViewController和menuTabBarController的高度,我发现是UITabBarController的高度在降低,而不是ContainerViewController

下面是与UITabBarController有关的代码

import UIKit
import QuartzCore

let menuTabBarController = UITabBarController()

var menuButton = UIBarButtonItem()

var menuEnabled = false

class ContainerViewController: UIViewController, CenterViewControllerDelegate, SidePanelViewControllerDelegate, UIGestureRecognizerDelegate {

    func needsSignOut(sender: SidePanelViewController) {
        // toggling left panel
        self.toggleLeftPanel()
        // signing out
        self.signOut()
    }


  var centerViewController: UITabBarController!

  var leftViewController: SidePanelViewController?

  let centerPanelExpandedOffset: CGFloat = 60

  override func viewDidLoad() {
    super.viewDidLoad()

    menuTabBarController.tabBar.hidden = true

    menuButton = UIBarButtonItem(title: "", style: UIBarButtonItemStyle.Plain, target: self, action: "toggleLeftPanel")
    if let font = UIFont(name: "FontAwesome", size: 20) {
        menuButton.setTitleTextAttributes([NSFontAttributeName: font], forState: UIControlState.Normal)
    }
    self.navigationItem.leftBarButtonItem = menuButton

    //let tabBarController = UITabBarController()
    let suggestionsVC = SuggestionsViewController()
    let testVC = detaiLSuggestion_VC()
    let controllers = [suggestionsVC,testVC]

    menuTabBarController.setViewControllers(controllers, animated: false)

    centerViewController = menuTabBarController
    view.addSubview(menuTabBarController.view)
    addChildViewController(menuTabBarController)

    //centerNavigationController.didMoveToParentViewController(self)
  }

  // MARK: CenterViewController delegate methods

  func toggleLeftPanel() {

    let notAlreadyExpanded = (currentState != .LeftPanelExpanded)

    if notAlreadyExpanded {
        addLeftPanelViewController()
    }

    animateLeftPanel(shouldExpand: notAlreadyExpanded)

  }

  func collapseSidePanels() {
    switch (currentState) {
    case .LeftPanelExpanded:
      toggleLeftPanel()
    default:
      break
    }
  }

  func addLeftPanelViewController() {
    if (leftViewController == nil) {
        leftViewController = SidePanelViewController()
        leftViewController!.delegate = self

        addChildSidePanelController(leftViewController!)
    }
  }

  func addChildSidePanelController(sidePanelController: SidePanelViewController) {

    view.insertSubview(sidePanelController.view, atIndex: 0)

    addChildViewController(sidePanelController)
    sidePanelController.didMoveToParentViewController(self)
  }

  func animateLeftPanel(#shouldExpand: Bool) {
    if (shouldExpand) {
      currentState = .LeftPanelExpanded

        animateCenterPanelXPosition(targetPosition: CGRectGetWidth(centerViewController.view.frame) - centerPanelExpandedOffset)
    } else {
      animateCenterPanelXPosition(targetPosition: 0) { finished in
        self.currentState = .BothCollapsed

        self.leftViewController!.view.removeFromSuperview()
        self.leftViewController = nil;
      }
    }
  }


  func animateCenterPanelXPosition(#targetPosition: CGFloat, completion: ((Bool) -> Void)! = nil) {
    UIView.animateWithDuration(0.5, delay: 0, usingSpringWithDamping: 0.8, initialSpringVelocity: 0, options: .CurveEaseInOut, animations: {
        self.centerViewController.view.frame.origin.x = targetPosition
      }, completion: completion)
  }

任何帮助推断这是从哪里来的,或者我如何能够着手修复它都将不胜感激!我再次为愚蠢的代码道歉。如果我能排除部分内容,我会进一步更新它。

rdelmar在聊天中为我找到了一个解决方案

通过如下方式指定
menuTabBarController.view.frame
解决了此问题:

menuTabBarController.view.frame = self.view.frame

真的很难弄清楚你想做什么。为什么有3种不同的选项卡栏控制器:menuTabBarController、menuTabBarController和centerViewController?如果你试图遵循我在回答你的另一个问题时提到的设置,那么应该只有一个选项卡栏控制器。我想的是我的测试应用程序的更新版本,它仍然使用故事板进行设置,但您应该让我知道这是否是您正在寻找的功能。@rdelmar再次感谢您的回复。我只有(或者更确切地说是使用)一个
UITabBarController
menuTabBarController。我正在设置
CenterViewController=menuTabBarController
作为
centerTabBarController
,这是一个我在粘贴时忘记删除的测试。不管怎样,我看了你的测试应用程序。但它似乎没有其他viewController。我的菜单系统现在很好用。但是,当我推出我的
containerViewController
并将其推回时。menuTabBarController将再次加载,由于某些原因,加载的帧高度较小。这就是我目前面临的问题,你说“它似乎没有其他视图控制器”是什么意思?你是说与你的登录控制器相当的东西吗?当你注销时,你推到LandingPageVC,这是一个新的控制器,与登录控制器不同吗?@rdelmar是的。我的应用程序以一个
UINavigationController
开始,哪个根viewcontroller是
loginViewController
。从那里,它推送到
ContainerViewController
(带有2个
childViewControllers
)。然后我从
ContainerViewController
推回到
LandingPageViewController
。但是当我再次登录时。我的
UITabBarController
的高度不是我屏幕的全高。(每次我注销和重新登录时,它都会变小。)-您链接的测试应用程序在ContainerViewController中启动。它不会在
ContainerViewController
之间来回推送。(这是我的问题)。