点击按钮时,我有一个方法运行:
let tempVC = UIStoryboard(name: "Main", bundle: nil).instantiateViewControllerWithIdentifier("AwardViewController") as! AwardViewController
tempVC.currentDocumentPartTitle = currentDocumentPart.title
这是AwardViewController类,
class AwardViewController: UIViewController {
@IBOutlet weak var textView: UITextView!
var currentDocumentPartTitle: String!
override func awakeFromNib() {
super.awakeFromNib()
//assigning text to UITextView in awakeFromNib method
//In order to find right textfile, currentDocumentPartTitle is used to search right data in plist.
}
问题在于,即使我传递变量,它也会在awakeFromNib方法中返回nil值错误,表示currentDocumentPartTitle
为零。如何在调用awakeFromNib之前传递变量?
答案 0 :(得分:1)
这是因为awakeFromNib()
在视图的属性可分配之前执行。请参阅https://stackoverflow.com/a/377390/1214800。
为什么不在viewDidLoad()
内完成您需要做的事情?
override func viewDidLoad() {
super.viewDidLoad()
print(currentDocumentPartTitle!) // works!
}
答案 1 :(得分:0)
您应该放置复制属性值的代码,并将其显示在目标视图控制器的viewWillAppear:animated:
方法的UI中。
因此,对于您的AwardViewController
课程,请向viewWillAppear:animated:
添加代码,以便将currentDocumentPartTitle
的值安装到您的用户界面中。
顺便说一句,在代码的第一部分中,您将显示创建视图控制器并设置tempVC.currentDocumentPartTitle
的值,但是您不显示任何代码来显示新的视图控制器。你是以模态方式呈现的吗?