Swift自定义UIViewController的标签为零

问题描述:

我用xib自定义了一个viewcontroller,并且这个viewcontroller有一个标签。Swift自定义UIViewController的标签为零

我已经将标签与xib连接起来了。

但是当我使用这个标签时,它是零。

我做了什么?

下面是我的代码。

import UIKit 

class MyViewController: UIViewController { 

    @IBOutlet weak var label: UILabel! 

    override func viewDidLoad() { 
     super.viewDidLoad() 
    } 
    override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 
    } 
} 

代码使用此视图 - 控制

let myViewController = MyViewController(nibName: "MyViewController", bundle: nil) 
    myViewController.label.text = "test" 
    presentViewController(myViewController, animated: true) {() -> Void in 
     println("ok") 
    } 

谢谢。

问题是你正试图访问标签加载之前。

以下更改可能会解决您的问题;

import UIKit 

class MyViewController: UIViewController { 

    var labelText: String! 
    @IBOutlet weak var label: UILabel! 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     //Setting Label text here 
     label.text = labelText; 
    } 

    override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 
    } 
} 

let myViewController = MyViewController(nibName: "MyViewController", bundle: nil) 
    myViewController.labelText = "test" 
    presentViewController(myViewController, animated: true) {() -> Void in 
     println("ok") 
    } 
+0

谢谢你的评论。我尝试你的代码,但viewDidLoad中的标签仍然是零。而我尝试viewDidAppear也是无 – aotian16

+0

检查您的IBoutlet是否连接正确。 – Shoaib

+0

你说得对。这是IBoutlet问题。再次感谢。 – aotian16

the documentation

指定的笔尖文件没有被加载的时候了。它在第一次访问视图控制器的视图时加载。如果您想在加载nib文件后执行额外的初始化,请覆盖viewDidLoad方法并在那里执行任务。

您可以从viewDidLoad访问标签。如果您需要从外部访问标签,请确保先访问了view属性,以强制加载视图。

未加载视图控制器的视图。您可以在视图控制器内使用viewDidLoad()方法,也可以通过访问视图属性来加载它。这是懒加载,并会加载你的看法。 因此,在访问viewController.view.label写入打印(viewController.view)以延迟加载视图