Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/110.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 在Swift中应用约束时,字符串与NSObject错误不同(视觉约束)_Ios_Swift_Nsdictionary_Nslayoutconstraint - Fatal编程技术网

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]