2017-01-20 75 views
1

如果函數「Savedata」被調用,我將新按鈕添加到[UIbutton]中,並將新元素添加到數組[[Double]]中。我希望索引[i]上的每個按鈕都能在索引[i]上的數組[[Double]中顯示數據)。我該怎麼做循環?按鈕陣列Swift 3

@IBAction func Savedata(_ sender: Any) { 

    subjectsznamky.insert(arrayx, at: 0) //subjectsznamky is the [[Double]] array 

var button : UIButton 
      button = UIButton(type: .system) as UIButton 
      button.frame = CGRect(x:5, y: 20, width: 100.0, height: 30) 
      button.setTitle(ourname, for: .normal) 
      self.view.addSubview(button) 
      buttons.append(button) 

    for i in buttons.indices { 
       buttons[i].frame.origin.y += 30 
       buttons[i].addTarget // here I need to create the function, that every button on index [i] displays data in subjectsznamky on index[i] 


} 

謝謝。

+0

你是什麼意思的按鈕「顯示數據」? – Frankie

+0

我的意思是在VC中顯示標籤中的數據 –

+0

您是否必須在元素0處插入數組?你可以追加嗎?如果你可以追加,你可以使用按鈕的「標籤」字段來存儲匹配的數組索引。點擊一個按鈕時,查看'sender'按鈕的'tag'並引用到數組中。 –

回答

1

這可能不是管理您的視圖或在應用程序中顯示數據的理想方式。您應該考慮改爲UITableView

話雖這麼說...

也許你可以嘗試這樣的事情,保持跟蹤你的按鈕和值的字典,而不是一個單獨的數組。如果你想保持順序,你仍然需要一個專門用於按鈕的數組。

var hashes = [UIButton : [Double]]() 
var buttons = [UIButton]() 

@IBAction func saveData(_ sender: Any) { 

    var button = UIButton(type: .system) 
    button.frame = CGRect(x:5, y: 20, width: 100.0, height: 30) 
    button.setTitle(ourname, for: .normal) 
    self.view.addSubview(button) 
    buttons.append(button) 

    hashes[button] = arrayx 

    for button in buttons { 
     button.frame.origin.y += 30 
     button.addTarget(self, action: #selector(MyClass.disaplayData(_:)), for: .touchUpInside) 
    } 
} 

func displayData(_sender: UIButton) { 
    if let doubleArray = hashes[sender] { 
     print(doubleArray) 
    } 
} 
+0

工作,謝謝 –