从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
答案 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”是您使用的标识符