我是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)
}
}
答案 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)
}