2016-09-30 11 views
0
class ViewController: UIViewController { 

    let manImage = UIImage(named: "man.png") 

    var buttons = Array(count: 5, repeatedValue: UIButton()) 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     // Do any additional setup after loading the view, typically from a nib. 

     createButtons() 
    } 

    override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 
     // Dispose of any resources that can be recreated. 
    } 

    func createButtons() { 
     for index in 0...4 { 
      buttons[index].setBackgroundImage(manImage, forState: .Normal) 
      self.view.addSubview(buttons[index]) 
      self.view.addConstraint(NSLayoutConstraint(
       item: buttons[index], 
       attribute: .CenterX, 
       relatedBy: .Equal, 
       toItem: view, 
       attribute: .CenterX, 
       multiplier: 1, 
       constant: 0)) 
     } 
    } 
} 

Unable to simultaneously satisfy constraints.エラーが発生します。なぜこれが起こり、これを解決するための提案がありますか?このオブジェクト作成ループで同時に制約エラーが発生するのはなぜですか?

ありがとうございます。

私は何を言いたいのか分かりませんが、スタックはさらにテキストを要求しています。

+0

ボタンが重なるようにする必要があります。自動的に追加される制約は親ビューに基づいています – Knight0fDragon

+0

私はいくつかのコードを作成し、別の質問を投稿します。私は少しあなたにそれをリンクさせます。ありがとう! – ludluck

+0

@ Knight0fDragon実際、私は90分間別の記事を投稿できないので、質問全体を変更しました。 – ludluck

答えて

1

buttonsアレイには、UIButtonという1つのインスタンスへの4つの参照が含まれています。代わりにこれを試してみてください:

let buttons = (0..<4).map({_ in UIButton()}) 

また、あなたはおそらく、各ボタンにtranslatesAutoresizingMaskIntoConstraints = falseを設定する必要があります。

+0

ありがとうございます。私はその参照を変更します。 – ludluck

+0

ほんの少しのフォローアップの質問。 (0 .. <4)は何をするのですか?私はそれが '.map'でマップされている4スロット配列を作成していると思いますか? – ludluck

+1

整数0〜3の['Range '](http://swiftdoc.org/v3.0/type/Range/)を作成します。 –

関連する問題