2016-12-13 7 views
0

これは私のコードですが、今は10個の異なるボタンが作成した関数に基づいた名前を与えられており、これが正しく機能しています。Swift 3配列の制限

public func buttonNameSetAndColor(){ 
    let buttonNamesAndColor = [button1, button2, button3, button4, button5, button6, button7, button8, button9, button10] 

    for i in 0...9 { 
     var val = NamePicker() 
     buttonNamesAndColor[i]?.setTitle(val, for: .normal) 
     buttonNamesAndColor[i]?.sizeToFit() 

    } 
} 

は私が今何をすべきか、私はforループの別について考えたが、それは物事のハードな方法かもしれません。この関数はもう少し複雑にしています。私がやりたいことは、10個のボタンのうち3個以上が同じ名前であれば、3個のうちの1個を他のランダムな名前に変更するようにすることです。

イム例えばforループ

 // array to find duplicates 
     var buttonValues = [String]() 
     buttonValues.insert(val, at: i) 
     print(buttonValues[i]) 

が、境界エラー

のうちその与える配列の内部で、このコードを実装しようとすると、私はこれらの名前(a、b、c、dを持って言うことができます、E、F、G、H)

button1 = a 

button2 = a 

button3 = a 

button4 = b 

button5 = b 

button6 = c 

button7 = c 

button8 = b 

button9 = f 

button10 = e 

私はまた、私の新しい機能修正ボタン1-ボタン3を持っているし、同じ名前を持つ唯一の2つのボタンがあるので、これらのボタンのいずれか、別の名前をしたいと思いますその後、button4、button5、button8を修正し、2つのボタンに既にある名前を付けずに名前の1つを変更します。

これをどのように達成できるかについてのご意見やご提案があれば助かります。

+0

これは奇妙なデザインです...なぜこれをしたいですか? – Alexander

+0

その問題を解決する方法を理解したいのですが、コーディングのポイントは問題を解決する方法を見つけることです。 @AlexanderMomchliov – Shane

+0

ああ、私を信じて、私は知っている。私のポイントは、私はこれがxyの問題であると思われるということです。http://xyproblem.info – Alexander

答えて

0

もっと良い方法があるかもしれませんが(私はこの提案を削除します)、それについてはどうですか?[String、UIButton]これはどうですか?

var dict = [String:UIButton]() 
setButtonTitle("a", newButton); 

func setButtonTitle(title:String, button:UIButton) { 
    var newTitle = "" 
    if dict[title] == nil { 
     dict[title] = button 
    } else { 
     newTitle = getNewTitle(button) 
     dict[newTitle] = button 
    } 
} 

func getNewTitle(button: UIButton) -> String { 
    // code to find unique title 
} 
+0

私はあなたがこのコードで考えていることを理解しています。配列内で選択されたすべてのボタン名を持つ必要があり、それらをすべて比較して、同じものを見つけ出し、要件に合うまで置き換えます。 – Shane

+0

私はタイトルの名前の新しい配列を教えるように配列に入れられるようにタイトルを設定するこの行のコードを得る方法がありますか? "buttonNamesAndColor [i]?setTitle(NamePicker()、for:.normal)" @dfd – Shane

+0

私はあなたが何をしているのか、なぜそれが分かっているのか(非常に)あなたはUIButtonsを配列に設定させることができますが、(1)コード全体でこれをやりたいと思うかもしれませんし、(2)もっと大きなもののサブビューとして設定するほうが良いでしょう。 UIToolbar、UINavigationBarなど – dfd