Ios 在Swift中应用约束时,字符串与NSObject错误不同(视觉约束)
Ios 在Swift中应用约束时,字符串与NSObject错误不同(视觉约束),ios,swift,nsdictionary,nslayoutconstraint,Ios,Swift,Nsdictionary,Nslayoutconstraint,的视图参数要求使用类型为[NSObject:AnyObject]的词典 创建viewsDict时,尝试将其声明为[NSObject:AnyObject]: import UIKit import Foundation class DetailView: UIViewController{ var fullImage:UIImageView? var nameLabel:UILabel? var detailLabel:UILabel? override fun
的视图
参数要求使用类型为[NSObject:AnyObject]
的词典
创建viewsDict
时,尝试将其声明为[NSObject:AnyObject]
:
import UIKit
import Foundation
class DetailView: UIViewController{
var fullImage:UIImageView?
var nameLabel:UILabel?
var detailLabel:UILabel?
override func viewDidLoad() {
super.viewDidLoad()
fullImage = UIImageView()
nameLabel = UILabel()
detailLabel = UILabel()
self.view.addSubview(fullImage!)
self.view.addSubview(nameLabel!)
self.view.addSubview(detailLabel!)
}
func applyContraints(){
self.view.addSubview(fullImage!)
fullImage?.setTranslatesAutoresizingMaskIntoConstraints(false)
nameLabel?.setTranslatesAutoresizingMaskIntoConstraints(false)
detailLabel?.setTranslatesAutoresizingMaskIntoConstraints(false)
var viewsDict:[String:AnyObject!] = ["imageView": fullImage!, "nameLabel": nameLabel!, "detailLabel": detailLabel!]
var constraints:NSArray
constraints = NSLayoutConstraint.constraintsWithVisualFormat("H:|-10-[imageView]-10-|",
options: 0,
metrics: nil,
views: viewsDict)
self.view.addConstraints(constraints)
}
}
您还必须将选项
参数值从0
更改为nil
此外,如果您想取消这些选项,您可以尝试以下方法:
var viewsDict: [NSObject: AnyObject] = ["imageView": fullImage!, "nameLabel": nameLabel!, "detailLabel": detailLabel!]
而不是:
var fullImage = UIImageView()
var nameLabel = UILabel()
var detailLabel = UILabel()
然后,对于viewsDict
声明,您可以删除代码>:
var fullImage: UIImageView?
var nameLabel: UILabel?
var detailLabel: UILabel?
请将options:0
更改为options:NSLayoutFormatOptions(0)
,这是这里的正确语法。嘿,Brian,为了避免类的init()函数,我将其作为可选选项,谢谢选项nil是working@SandyRawat很高兴它起作用了!实际上,如果你使用我上面介绍的方法,将变量设置为初始值,你根本不需要init
。@SandyRawat,那么你应该选择gabbler答案旁边的复选标记,这样以后的答案搜索者就更容易找到。
var viewsDict: [NSObject: AnyObject] = ["imageView": fullImage, "nameLabel": nameLabel, "detailLabel": detailLabel]