Swift 如何使用单独的视图控制器从弹出视图更新UIlabel

Swift 如何使用单独的视图控制器从弹出视图更新UIlabel,swift,Swift,对Swift编程来说有点陌生,对从弹出视图更新现有uilabel有疑问。我遵循了本教程: 我有一个名为“myViewController”的主视图控制器和一个名为“Popup”的弹出视图控制器。 在myViewController上,我有1个UILabel,它是一个插座: @IBOutlet weak var myLabel: UILabel? 此标签在viewDidLoad中填充: myLabel.text = "hello" 在弹出视图控制器上,我有6个按钮。每个按钮都有一个iActi

对Swift编程来说有点陌生,对从弹出视图更新现有uilabel有疑问。我遵循了本教程:

我有一个名为“myViewController”的主视图控制器和一个名为“Popup”的弹出视图控制器。 在myViewController上,我有1个UILabel,它是一个插座:

@IBOutlet weak var myLabel: UILabel?
此标签在viewDidLoad中填充:

myLabel.text = "hello"
在弹出视图控制器上,我有6个按钮。每个按钮都有一个iAction:

  @IBAction func button1(_ sender: Any) {

//how do I set the uilabel from here to myViewController

dismiss(animated: true, completion: nil)
}
我会像这样显示弹出窗口:

我希望能够打开弹出式控制器并选择一个UIbutton,它将自动关闭并更新第一个viewcontroller上的标签。除了更新UIlabel,我可以让一切正常工作

希望这是有道理的


谢谢

例如,当按下弹出式控制器上的按钮时,您可以使用通知或协议让主视图控制器知道

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:致命错误:在展开可选值OK时意外发现nil,这很有意义。在myViewController变量labelText:String中为文本设置一个值怎么样?如果myLabel.text!=nil{myLabel.text}else{myLabel.text=“hello”}将changeLabelToSayFoo更改为func changeLabelToSayFoo(){self.labelText=“Foo”}您好,我从这个答案中了解到它正在工作。谢谢,没问题,很乐意帮忙。如果这对您有效,请单击“接受”(此答案)。非常感谢。