gpt4 book ai didi

ios - subview 点击项目显示在父 View 标签

转载 作者:可可西里 更新时间:2023-11-01 02:20:17 24 4
gpt4 key购买 nike

我想制作一个具有标签、表格 View 和单击按钮的用户界面。当点击按钮时,我们会弹出一个有很多按钮的半屏 View 。我希望用户仍然可以点击屏幕的其余部分。

所以我使用帖子中建议的方法 How To Present Half Screen Modal View?

方法 2:为大小为现有 View 一半的 UIView 设置动画。 然后你必须简单地跟随 UIView 的动画。因为它只是一个将作为 subview 添加到现有 View 的 UIView,所以您将能够触摸屏幕的其余部分。

由于我是 ios 和 swift 的新手,我想得到一些建议。现在我已成功添加为 subview 并显示在屏幕的一半。

如何实现让 subview 点击按钮结果显示在父 View 标签文本上?

我正在考虑 parent.xib 和 subview.xib 具有相同的 UIVeiwController.swift。然后我可以将@IBOutlet 和@IBAction 添加到同一个 Controller swift 文件并更新结果。但不知道这是可接受的方式吗?

如果不是,subViewController如何将结果/事件发送到父 View 并在父 View 组件中更新?

最佳答案

您可以使用委派。这使您的 View Controller 保持解耦,即防止子级引用其父级,这允许其他 View Controller 以相同的方式与模态视图 Controller 交互。

class ParentViewController : UIViewController, ModalViewControllerDelegate {

@IBOutlet weak var label: UILabel!

override func viewDidLoad() {
super.viewDidLoad()

let modalViewContorller = ModalViewController()
modalViewContorller.delegate = self
self.presentViewController( modalViewContorller, animated: true, completion: nil )
}

func modalViewControllerDidProduceResult( modalViewController: ModalViewController, result: String ) {
self.label.text = result
}
}

protocol ModalViewControllerDelegate {
func modalViewControllerDidProduceResult( modalViewController: ModalViewController, result: String )
}

class ModalViewController: UIViewController {

var delegate: ModalViewControllerDelegate?

@IBAction func buttonClicked( sender: AnyObject? ) {

delegate?.modalViewControllerDidProduceResult( self, result: "Hello!" )
}
}

您还可以使用闭包,它在 Swift 中提供了更简洁的语法。

class ParentViewController : UIViewController {

@IBOutlet weak var label: UILabel!

override func viewDidLoad() {
super.viewDidLoad()

let modalViewContorller = ModalViewController()
self.presentViewController( modalViewContorller, animated: true, completion: nil )
modalViewContorller.resultBlock = { (result: String) in
self.label.text = result
}
}
}

class ModalViewController: UIViewController {

var resultBlock: ((String) -> ())?

@IBAction func buttonClicked( sender: AnyObject? ) {

self.resultBlock?( "Hello!" )
}
}

关于ios - subview 点击项目显示在父 View 标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31166610/

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