UITabBar上自定义按钮的最佳方式是呈现模态视图

时间:2018-06-17 19:28:29

标签: ios swift

我是Xcode / Swift的新手。我有一个中心按钮我想从当前视图(选项卡)呈现模态视图。

我已经为UITabBar实现了一个自定义类,根据此guide添加了该按钮。

这个UITabBar没有我自己可以找到的视图控制器,所以当我尝试呈现视图时出现错误。 Error: Value of type 'MainTabBar' has no member 'present'

有没有办法让这个按钮在当前视图中显示模态? 我不确定如何从此自定义类访问当前视图。

我应该将按钮的addTarget指向uitabbar Delegate并在其他观看中注意吗?

我是否应该停止这样做,只需使用一个标签来制作标签,该标签可以在另一个视图的ViewDidAppear()中提取我的模态视图? 如果我这样做的话,我想我会失去弹出或解散回到最后一个视图的能力。

这是我正在使用的自定义UITabBar课程。

class MainTabBar: UITabBar {

private var middleButton = UIButton()

override func awakeFromNib() {
    super.awakeFromNib()
    setupMiddleButton()
}

func setupMiddleButton() {
    middleButton.frame.size = CGSize(width: 70, height: 70)
    middleButton.backgroundColor = .blue
    middleButton.layer.cornerRadius = 35
    middleButton.layer.masksToBounds = true
    middleButton.center = CGPoint(x: UIScreen.main.bounds.width / 2, y: 0)
    middleButton.addTarget(self, action: #selector(test), for: .touchUpInside)
    addSubview(middleButton)
}

@objc func test() {
    let vc = createController()
    vc.modalTransitionStyle = .crossDissolve
    self.present(vc, animated: true, completion: nil)
   }
}

1 个答案:

答案 0 :(得分:0)

找到更好的implementation。 创建了一个继承自UITabBarController的自定义类,并将其命名为MainViewController。

在该控制器中设置中间按钮,而不是在MainTabBar自定义类中。

自我现在有成员在场。

  @objc func test() {
     let storyboard = UIStoryboard(name: "Main", bundle: nil)
    let vc =
    storyboard.instantiateViewController(withIdentifier: "createModal") as! createController

    self.present(vc, animated: true, completion: nil)
}

https://github.com/drrost/Custom-Tabbar-Cetner-Button