gpt4 book ai didi

swift - View 中的按钮在 View 容器中不起作用

转载 作者:行者123 更新时间:2023-11-28 14:24:46 24 4
gpt4 key购买 nike

我的 View Controller 中有一个 View 容器,它被拉伸(stretch)到整个屏幕。已启用用户交互。当我通过此 View Controller 中的此 View 容器打开另一个 View 时,按钮可单击但没有响应。我应该怎么做才能让它发挥作用?

View Controller :

class ViewController: UIViewController {

@IBOutlet weak var viewContainer: UIView!

var views: [UIView]!

override func viewDidLoad() {
super.viewDidLoad()

views = [UIView]()
views.append(LoginVC().view)
views.append(RegisterVC().view)

for v in views{
viewContainer.addSubview(v)
}

viewContainer.bringSubview(toFront: views[1])
}

override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}

@IBAction func switchViewAction(_ sender: UISegmentedControl) {
print("clicked - segment")
self.viewContainer.bringSubview(toFront: views[sender.selectedSegmentIndex])
}

container view

这是另一个 View 中的按钮

@IBAction func registerTapped(_ sender: UIButton) {
print("Clicked - register")
}

我用了Managing View Controllers使其正常工作的教程。

最佳答案

您必须替换整个 ViewController,而不仅仅是 View

@IBAction func switchViewAction(_ sender: UISegmentedControl) {
self.viewContainer.bringSubview(toFront: views[sender.selectedSegmentIndex])
}

您当前的代码只是将 LoginVCview 替换为 RegisterVCview,而不是替换LoginVCRegisterVC。当您这样做时,您留下了负责实际响应任何交互的 ViewController

您必须重新编写代码以跟踪 ViewController 而不仅仅是它们的 View 。然后,当您需要更改当前 View 时,不要将所有 View 添加到 viewContainer 并将它们移到前面,您应该将子 ViewController(嵌入在容器中的 ViewController)设置为您要显示的 ViewController(LoginVCRegisterVC)。

关于swift - View 中的按钮在 View 容器中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51701477/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com