Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/108.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 在主视图中按下按钮时,如何更改popover视图控制器中标签的标签文本?_Ios_Swift - Fatal编程技术网

Ios 在主视图中按下按钮时,如何更改popover视图控制器中标签的标签文本?

Ios 在主视图中按下按钮时,如何更改popover视图控制器中标签的标签文本?,ios,swift,Ios,Swift,我对斯威夫特比较陌生。我有一个主视图控制器ViewControllerMain和一个popover视图控制器PopUpVC,它只有一个标签。我有一个函数,infoClicked,当单击info按钮时,它会显示poover和另一个函数showpoover。当我单击按钮时,我想更改popover的标签文本。但是,对于当前代码,标签始终显示默认值 这是我的密码: class ViewControllerMain: UIViewController, UIPopoverPresentationContr

我对斯威夫特比较陌生。我有一个主视图控制器ViewControllerMain和一个popover视图控制器PopUpVC,它只有一个标签。我有一个函数,infoClicked,当单击info按钮时,它会显示poover和另一个函数showpoover。当我单击按钮时,我想更改popover的标签文本。但是,对于当前代码,标签始终显示默认值

这是我的密码:

class ViewControllerMain: UIViewController, UIPopoverPresentationControllerDelegate, GetTimesUsed {

     let tipController: PopUpVC = PopUpVC().self

     @IBAction func infoClicked(_ sender: UIButton) {
          tipController.tipText = "Success"
          showPopover()
     }

     func showPopover() {

        let myViewController = storyboard?.instantiateViewController(withIdentifier: "popupController")

        myViewController?.preferredContentSize = CGSize(width: 350, height: 200)
        myViewController?.modalPresentationStyle = .popover

        let popOver = myViewController?.popoverPresentationController
                popOver?.delegate = self
        UIView.animate(withDuration: 1, animations: {
            self.GifView.alpha = 0.7
        })

        DispatchQueue.main.asyncAfter(deadline: .now() + 0.45) {
            UIView.animate(withDuration: 0.5, animations: {
                self.present(myViewController!, animated: true, completion: nil)
            })
        }
                popOver?.permittedArrowDirections = .down
                popOver?.sourceView = self.view

        var passthroughViews: [AnyObject]?
        passthroughViews = [infoButton]
        myViewController?.popoverPresentationController?.passthroughViews = (NSMutableArray(array: passthroughViews!) as! [UIView])

        popOver?.sourceRect = infoButton.frame
    }
}

感谢您的帮助。

如评论中所述,您似乎要实例化弹出式控制器两次,因此请在showPopOver代码中这样尝试:

 let myViewController = storyboard?.instantiateViewController(withIdentifier:   "popupController") as! PopUpVC

    myViewController.preferredContentSize = CGSize(width: 350, height: 200)
    myViewController.modalPresentationStyle = .popover

    myViewController.tipText = '' //set to what ever

您还可以添加showPopover函数代码以供参考吗?似乎您要实例化popoverController两次。一旦进入let tipController:PopUpVC=PopUpVC.self,在show popover方法中再次出现'let popover=myViewController?.PopoOverPresentationController',请尝试在ShowPover方法中添加popover.tipText=成功我按照您在showPopover中对myViewController所说的做了,但是它说类型为“UIViewController”的值没有成员“tipText”。对不起,我弄错了。误读代码。需要明确的是,类为“PopUpVC”的popupController是否将情节提要标识符设置为popupController?如果是,请检查下面的答案
 let myViewController = storyboard?.instantiateViewController(withIdentifier:   "popupController") as! PopUpVC

    myViewController.preferredContentSize = CGSize(width: 350, height: 200)
    myViewController.modalPresentationStyle = .popover

    myViewController.tipText = '' //set to what ever