iOS / Swift新手。我正在尝试将一个项目(只是通过NSData init()方法从URL中获取内容)从Swift 2迁移到Swift 3,我遇到了几个问题:
我在ViewController中有一个prepareForSegue
。 segue本身工作正常,但是我无法从原始控制器的UILabel
中提取文本并将其发送到目标控制器。出于某种原因,目标VC UIlabel
仍显示默认值。
Segue代码:
if let identifier = segue.identifier{
if identifier == "showUserDetailSegue"{
if let detailsViewController = segue.destination as? DetailsViewController,
let cell = sender as? UserInfoTableViewCell,
let text = cell.textLabel?.text{
detailsViewController.text = text
}
}
}
detailsViewController.text
是使用didSet
属性的公共变种。
DestinationVC代码:
var text: String?{
didSet{
updateUI()
}
}
private func updateUI(){
self.detailsTextView.text = text
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
@IBOutlet weak var detailsTextView: UILabel!
2.我的GET
请求网址之间有一些空格。例如,如果我们采用例如:http://www.omdbapi.com/?t=Game%20of%20Thrones&Season=1
的示例网址,则对此的异步调用将继续失败,并且"网址无效"。我们应该在这上面运行某种编码吗?
非常感谢任何提示,提示。
感谢。
答案 0 :(得分:2)
File docDir = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOCUMENTS);
if (!docDir.exists()) {
if(docDir.mkdirs()) {
File directory = new File(docDir,"test");
} else {
// Unable to create document directory. check Run time permissions
}
}
UILabel
是否为未打开的可选内容?那时仍有DetailsViewController
的可能性。您应该配置视图的最早时刻是nil
。
只需删除viewDidLoad
处理程序,然后将didSet
的文字设置为UILabel
中的self.text
。