UITabBarController 上的 WYPopoverController 下降

Posted

技术标签:

【中文标题】UITabBarController 上的 WYPopoverController 下降【英文标题】:WYPopoverController on UITabBarController falls 【发布时间】:2015-04-23 15:25:51 【问题描述】:

我在 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 时它因错误而崩溃

**Planet.AddPlanController 类的实例 0x7fe4a48849d0 已被释放,而键值观察者仍向其注册。当前观察信息:( 上下文:0x0,属性:0x7fe4a4915e00> **

请给我一个建议,如何从 UITabBar 上的按钮调用模态视图控制器之类的东西,它将覆盖所有屏幕,并带有阴影 bg。 =(

【问题讨论】:

【参考方案1】:

您必须保持对 popoverController 的引用直到它可见,但现在当您从 showAddPlan 方法返回时它会被释放。

从您的函数中移动popoverController 的定义,它将起作用

【讨论】:

以上是关于UITabBarController 上的 WYPopoverController 下降的主要内容,如果未能解决你的问题,请参考以下文章

如何删除出现在其他选项卡上的白色顶部空间(UITabBarController)

导航到 UITabBarController 上的某个选项卡

一个视图上的纵向 UITabBarController,另一个 UIView 上的横向视图,不工作

我可以通过 TabBarItem 上的自定义事件点击来制作自定义 UITabBarController 吗?

JZOJ6368质树(tree)

将 UITabBarController 从单独的 XIB 加载到 iPhone 上的 Window 应用程序中