Когда я впервые загружаю приложение и регистрируюсь. Все в порядке.Высота UITabBarController уменьшается каждый раз, когда она загружается
Однако, когда я выхожу из системы, войдите в систему. Высота моего представления была уменьшена. Вот скриншот ошибки:
Я havn't удалось найти причину этого. Сделать этот довольно сложный вопрос, чтобы обратиться за помощью, поскольку я не могу указать точный раздел кода, вызывающий проблему. Но я попытаюсь.
Проблемная установка следующим образом:
У меня есть containerViewController
, с 2-мя childViewControllers, меню и UITabBarController
. UITabBarController
имеет 2 UIViewControllers
.
Чтобы лучше объяснить это, вот визуальное представление.
_______________________
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
_______________________
Вот как я нажимаю контейнерViewController, когда вызывается успешный логин.
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)
}
Любая помощь выводя, где это происходит из или как я могу идти о фиксации было бы весьма признателен! И снова извиняюсь за немой код. Я обновлю его, если я смогу исключить его части.
Это действительно трудно понять, что вы пытаетесь сделать. Почему у вас есть 3 разных контроллера панели вкладок, menuTabBarController, menuTabBarController и centerViewController? Если вы пытаетесь следовать чему-то вроде настройки, о которой я говорил в ответе на другой ваш вопрос, должен быть только 1 контроллер панели вкладок. – rdelmar
То, что я имел в виду, было чем-то вроде этой обновленной версии моего тестового приложения, http://jmp.sh/d07hcHp. Это все еще использует раскадровку, чтобы выполнить настройку, но вы должны сообщить мне, если это функциональность, которую вы «Ищем. – rdelmar
@rdelmar Спасибо за ответы еще раз. Я только (или, скорее, использую) один 'UITabBarController' menuTabBarController. Я устанавливаю 'CenterViewController = menuTabBarController' как для' centerTabBarController', который был тестовым, который я забыл удалить в моей пасте. Во всяком случае, я посмотрел ваше тестовое приложение. Но у него, похоже, нет другого viewController. Моя система меню работает отлично. Однако, когда я отжимаю свой «containerViewController» и отжимаю его. MenuTabBarController снова загружается и по какой-то причине загружается с меньшей высотой кадра. Это проблема, с которой я сейчас сталкиваюсь –