2016-05-12 36 views
2

說明:如何刪除我用循環創建的多個按鈕?

1)I啓動按鈕類以上:

var myButton = UIButton() 

2)I然後創建按鈕的x量取決於有多少項目是在一個陣列

for letter in arrayOfLetters { 


      myButton = UIButton(frame: CGRect(x: buttonX, y: 500, width: someFloat, height: someFloat)) 
      buttonX = buttonX + thirdFloat //spacing 


      myButton.layer.cornerRadius = 5 
      myButton.backgroundColor = UIColor.darkGrayColor() 
      myButton.setTitle("\(letter)", forState: UIControlState.Normal) 
      myButton.titleLabel?.text = "\(letter)" 
      myButton.addTarget(self, action: "myButtonPressed:", forControlEvents: UIControlEvents.TouchUpInside) 

      self.view.addSubview(myButton) 



     } 

3)稍後一旦用戶按下正確的按鈕,我調用一個函數來刷新,我想刪除所有的按鈕。這是這樣我就可以根據新的數組

myButton.removeFromSuperview() 

ISSUE產生新的按鈕:

然而這並沒有什麼,我試着給按鈕的標籤和標籤刪除按鈕==標籤識別,但什麼也沒發生。

我可以刪除所有的觀點,但刪除一切,

我試過,但還是虛空happends

var buttons = [myButton] 
      for button in buttons as! [UIButton] { 
       button.removeFromSuperview() 
      } 

我要刪除我添加了所有的按鈕,我要麼不刪除它們,或刪除視圖中的所有內容

+0

您也可以通過爲每個按鈕分配'tag'值來移除按鈕。 –

回答

2

EASY FIX:

1)內部類,任何FUNC的:

var buttonsArray = [UIButton]() 

2)這裏聲明myButton並添加append行:

for letter in arrayOfLetters { 


    var myButton = UIButton(frame: CGRect(x: buttonX, y: 500, width:  someFloat, height: someFloat)) 

...

 self.buttonsArray.append(myButton) 
} 

3)要刪除按鈕:

for btn in buttonsArray { 
    btn.removeFromSuperview() 
} 

說明:

總是存儲在你與循環,如果創建元素的數組您想要一次輕鬆刪除所有這些文件。

+0

簡單,簡潔和工作 – user2389087

2

您在循環時重新分配myButton變量。在你的代碼

var buttons:[UIButton]() 

再後來:

刪除此行:

var myButton = UIButton() 

頂部添加屬性按​​住按鈕

for letter in arrayOfLetters { 


     var myButton = UIButton(frame: CGRect(x: buttonX, y: 500, width: someFloat, height: someFloat)) 
     buttonX = buttonX + thirdFloat //spacing 


     myButton.layer.cornerRadius = 5 
     myButton.backgroundColor = UIColor.darkGrayColor() 
     myButton.setTitle("\(letter)", forState: UIControlState.Normal) 
     myButton.titleLabel?.text = "\(letter)" 
     myButton.addTarget(self, action: "myButtonPressed:", forControlEvents: UIControlEvents.TouchUpInside) 

     self.view.addSubview(myButton) 

     self.buttons.append(myButton) 

    } 

那麼你應該能夠像這樣移除:

for button in self.buttons { 
    button.removeFromSuperview() 
} 

這應該可以解決您的問題,但重要的是要明白問題所在,因此您可以使用以下代碼行將新按鈕定義爲屬性:var myButton = UIButton()。這持有一個按鈕。當您循環創建按鈕時,您將覆蓋下一個按鈕。

所以,如果有的話,調用myButton.removeFromSuperView()將刪除您創建的最後一個。按照我所建議的方式進行操作意味着您創建一個按鈕並將其添加到一組按鈕中,以便您可以稍後迭代依次引用每個按鈕並將其刪除。

+0

雖然我接受了上述解決方案,但您對解決該問題的解釋很有幫助。感謝這 – user2389087

+0

您的歡迎,不確定誰downvoted它,接受的答案後添加,只是這沒有太多的解釋 – Scriptable

2

我希望它會幫助你給標籤爲您的按鈕,當您添加刪除按鈕

 for button in self.view.subviews { 
    if button.tag == 100 { 
    button.removeFromSuperview() 
} 
} 
相關問題