2015-02-11 49 views
-1

的亞型我似乎有與NSLayoutConstraint問題。從我可以收集(我希望我是錯在這裏),該.addConstrait()功能應該採取NSLayoutContraint類型的變量 - 但NSLayoutConstraint.constraintsWithVisualFormat()正在產生NSArray S'問題與佈局約束:NSArray的是不是NSLayoutConstraint

這沒有道理給我。我試着將NSArray轉換成NSLayoutConstraint,但是我得到了這樣的錯誤。當然,NSLayoutConstraint.constraintsWithVisualFormat()的輸出將與.addConstrait()預期的輸出類型相同。

如果不是爲什麼不呢?什麼是解決這個問題的最好方法?

下面是代碼:

let swiftViews:Dictionary[String: UIView] = ["status":status] 
    let swiftMetrics = ["standardWidth":200] 
    let views:NSDictionary = swiftViews as NSDictionary 
    let metrics:NSDictionary = swiftMetrics as NSDictionary 

    let statusHorzVFLCons = NSLayoutConstraint.constraintsWithVisualFormat("|-[status]-|", options: NSLayoutFormatOptions(0), metrics: metrics, views: views) 

    self.view.addConstraint(statusHorzVLFCons) 

最後一行產生錯誤:

'NSArray' is not a subtype of 'NSLayoutConstraint' 

有人能指出我要去的地方錯了。

+0

退房LIB製圖您的所有需求contraint:https://github.com/robb/Cartography – 2015-02-11 14:57:24

回答

3

constraintsWithVisualFormat(_:options:metrics:views:)回報NSLayoutConstraintNSArray

只要使用的addConstraints(_:)代替addConstraint(_:)

self.view.addConstraints(statusHorzVLFCons) 
        ^
+0

再次感謝。我知道我一定在做一些愚蠢的事情。 – Jimmery 2015-02-11 13:57:10

1

addConstraint方法期待一個約束,然而constraintsWithVisualFormat返回零個或多個約束的NSArray

嘗試添加s。

[self addConstraints:/*your NSLayoutConstraint constraintsWithVisualFormat: call */]; 

蘋果的命名約定通常可以幫助你在這裏。注意constraintsWithVisualFormat是複數,而addConstraint是單數(而是複數)。