2015-04-23 4 views
1

Я создаю кнопку на UITabBarCOntroller и пытаюсь вызвать модальный просмотр всех экранов в приложении. Я пытаюсь использовать WYPopoverController в качестве решения Мой класс UITabBarController являетсяWYPopoverController на UITabBarController падает

class PlanetTabBarController: UITabBarController, WYPopoverControllerDelegate { 

override func viewDidLoad() { 
    super.viewDidLoad() 
    self.tabBar.tintColor = kTintColor 

    var items = self.tabBar.items as! [UITabBarItem] 
    let centredTabBar:UITabBarItem = items[2] 
    self.tabBar.layer.borderWidth = 0.50 

    centredTabBar.image = UIImage() 
    self.tabBar.layer.borderColor = UIColor.clearColor().CGColor 
    self.tabBar.layer.borderWidth = 0 

    self.tabBar.shadowImage = UIImage() 
    // self.tabBar.backgroundImage = ktabBarImage 
    self.tabBar.backgroundImage?.imageWithAlignmentRectInsets 

    print(UIDevice.currentDevice().modelName) 
    if(UIDevice.currentDevice().modelName != "iPhone 6" && UIDevice.currentDevice().modelName != "iPhone 6 Plus"){ 
     self.tabBar.backgroundImage = ktabBarImage 
    } 
    if(UIDevice.currentDevice().modelName == "iPad 2"){ 
     self.tabBar.backgroundImage = ktabBarImage 
    } 



     if let font = UIFont(name: "Avenir-Black", size: 10) { 
      let appearance = UITabBarItem.appearance() 
      let attributes = [NSFontAttributeName:font] 
      appearance.setTitleTextAttributes(attributes, forState: UIControlState.Normal) 

     } 


    let buttonImage:UIImage = UIImage(named: "tab_planet")! 

    var button: UIButton = UIButton.buttonWithType(UIButtonType.Custom) as! UIButton 
    button.frame = CGRectMake(0.0, 0.0, buttonImage.size.width, buttonImage.size.height) 
    button.setBackgroundImage(buttonImage, forState: UIControlState.Normal) 

    var heightDifference:CGFloat = buttonImage.size.height - self.tabBar.frame.size.height 
    if (heightDifference < 0){ 
     button.center = self.tabBar.center 
     button.center.y = self.tabBar.center.y - 5 
    }else{ 
     var center:CGPoint = self.tabBar.center 
     center.y = center.y - heightDifference/2.0 - 5 
     button.center = center 
    } 
    button.addTarget(self, action: "addPlanet:", forControlEvents: .TouchUpInside) 
    self.view.addSubview(button) 






} 

func addPlanet(sender: UIButton!) { 
    self.showAddPlan() 
} 

func showAddPlan(){ 

    var contentViewController = UIStoryboard(name: "AddPlan", bundle: nil).instantiateViewControllerWithIdentifier("AddPlanController") as? AddPlanController 


    var popoverController = WYPopoverController(contentViewController: contentViewController) 
    popoverController.delegate = self 

    popoverController.presentPopoverFromRect(CGRectZero, inView: nil, permittedArrowDirections: WYPopoverArrowDirection.None, animated: false) {() -> Void in 
     print ("done") 
    } 






} 

func popoverControllerShouldDismissPopover(popoverController: WYPopoverController!) -> Bool { 
    return false 
} 

}

Но когда я пытаюсь вызвать мой AddPlanController разбился с ошибкой

** Экземпляр 0x7fe4a48849d0 класса планеты. AddPlanController был освобожден, а наблюдатели с ключевыми значениями все еще были зарегистрированы с ним. Информация о текущем наблюдения: ( Контекст: 0x0, свойство: 0x7fe4a4915e00> **

Пожалуйста, дайте мне совет, как назвать что-то вроде модальный контроллер представления от кнопки на UITabBar, что будет над всеми экранами, с тенью BG. = (

ответ

0

вы должны держать ссылку на popoverController, пока это не видно, но теперь высвобождены, когда вы вернетесь из showAddPlan метода.

определение переездом popoverController из вашей функции, и она будет работать

 Смежные вопросы

  • Нет связанных вопросов^_^