如何使用单独的视图控制器从弹出视图更新 UIlabel
Posted
技术标签:
【中文标题】如何使用单独的视图控制器从弹出视图更新 UIlabel【英文标题】:How do I update a UIlabel from Popup View Using Separate View Controller 【发布时间】:2020-02-04 18:21:26 【问题描述】:对 Swift 编程有点陌生,并且有一个关于从弹出视图更新现有 uilabel 的问题。我按照本教程进行操作:
YouTube
我有一个名为“myViewController”的主 ViewController 和一个名为“popUp”的弹出视图控制器。 在 myViewController 我有 1 x UILabel 这是一个插座:
@IBOutlet weak var myLabel: UILabel?
这个标签被填充到 viewDidLoad:
myLabel.text = "hello"
在弹出视图控制器上,我有 6 个按钮。每个按钮都有一个 IBAction:
@IBAction func button1(_ sender: Any)
//how do I set the uilabel from here to myViewController
dismiss(animated: true, completion: nil)
我像这样展示弹出窗口:
Storyboard Segue
我希望能够调出弹出控制器并选择一个 UI 按钮,它会自动关闭并更新第一个视图控制器上的标签。除了更新 UIlabel,我可以让一切正常工作。
希望有道理
谢谢你
【问题讨论】:
【参考方案1】:例如,您可以使用通知或协议,让主视图控制器知道何时按下弹出控制器上的按钮。
https://developer.apple.com/documentation/foundation/nsnotificationcenter
https://docs.swift.org/swift-book/LanguageGuide/Protocols.html
【讨论】:
你好,我从这个答案中得到了它。谢谢 没问题,很高兴为您提供帮助。如果这对您有用,请单击接受(此答案)。谢谢。【参考方案2】:You can create functions inside of myViewController that will get called when a button is pressed:
//this would be in myViewController
var labelText: String?
// in viewDidLoad()
if myLabel.text != nil
myLabel.text
else
myLabel.text = "hello"
func changeLabelToSayFoo()
self.labelText = "Foo"
//this would be for the button in the pop up controller
@IBAction func button1(_ sender: Any)
myViewController.changeLabelToSayFoo()
dismiss(animated: true, completion: nil)
【讨论】:
您好,我之前尝试过这种方式,但出现以下错误。 线程 1:致命错误:在展开可选值时意外发现 nil 好的,这是有道理的。为 myViewController var labelText: String 中的文本设置一个值怎么样?然后在 viewDidLoad() if myLabel.text != nil myLabel.text else myLabel.Text = "hello" 将 changeLabelToSayFoo 更改为 func changeLabelToSayFoo() self.labelText = "Foo"以上是关于如何使用单独的视图控制器从弹出视图更新 UIlabel的主要内容,如果未能解决你的问题,请参考以下文章