xcode4.2 - Swift 从外部访问 Viewcontrollers 标签 class

xcode4.2 - Swift Accessing Viewcontrollers label from external class

从 AnotherClass 访问 ViewController: UIViewController 标签(这里:outlet called 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 class(称为 ViewController)并在那里访问我的插座(标签),称为定时器标签? 谢谢

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

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

请注意,上面创建了一个新实例,很难说您的另一个 viewController 是在哪里创建的以及如何从您发布的代码访问它。

根据你的问题的解释, 您有一个 IBOutlet(只能通过实例访问)并且您正在尝试通过 Class (ViewController)

访问它

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

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

您需要为 class 喜欢的

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

创建时

 let ca = ExternalClass()
 ca.delegate = self

您可以为您尝试从中访问标签的视图控制器分配一个标识符,实例化它,然后访问标签,如下所示:

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

其中 "abc" 是您使用的标识符