xcode4.2-从外部类快速访问Viewcontrollers标签

时间:2019-05-20 16:42:48

标签: swift inheritance viewcontroller xcode4.2

从AnotherClass访问ViewController:UIViewController标签(这里是名为 timerLabel 的插座)的问题出在哪里。我想设置一个文本。

class AnotherClass{

//[...]

 func updateTimeLabel(){
        // To Solve!!!*******
        //class name is ViewController?

    let myLabel = ViewController.timerLabel
    myLabel.text = "HiDuEi"
}

//[...]

// error message is:

//Instance member 'timerLabel' cannot be used on type 'ViewController'

}

如何正确访问ViewController类(称为 ViewController )并在那里访问名为 timerLabel 的我的插座(标签)? THX

4 个答案:

答案 0 :(得分:0)

ViewController是一种类型,而不是对象的实例。您需要以某种方式获取对您的 ViewController实例的引用,然后访问标签。例如

let viewController = ViewController()
viewController.timerLabel.text = "HiDuEi"

请注意,以上内容创建了一个新实例,很难说出另一个viewController的创建位置以及如何从发布的代码中访问它。

答案 1 :(得分:0)

您的问题的解释似乎是, 您有一个IBOutlet(只能通过Instance访问),并且您正在尝试通过Class(ViewController)访问它

创建一个ViewController对象,然后尝试更新timerLabel的文本

let vc = ViewController()
vc.timerLabel.text = "HiDuEi"

答案 2 :(得分:0)

您需要为此类创建一个委托

class ExternalClass{
   weak var delegate:VCName?
    func updateTimeLabel(){
    // To Solve!!!******* 
      delegate?.timerLabel.text = "HiDuEi" 
    }
 }

创建时

 let ca = ExternalClass()
 ca.delegate = self

答案 3 :(得分:0)

您可以为试图访问标签的视图控制器分配一个标识符,实例化它,然后访问标签,就像这样:

var vc : ViewController = storyboard.instantiateViewControllerWithIdentifier("abc") as! ViewController
vc.timerLabel.text = "HiDuEi"

其中“ abc”是您使用的标识符