2016-11-12 20 views
0

比方說,我想創建按鈕的列表。我有一個按鈕B,點擊後按這種方式創建按鈕A列表。如何創建相同的對象,在Xcode的一個按鈕,斯威夫特

然後,每點擊一個按鈕時,它會刪除自身。

我該怎麼做? 謝謝

+0

噸做到這一點。你試過什麼了? –

+0

什麼都沒有,你有什麼建議? –

+0

一個簡單的谷歌搜索,以編程方式_create UIButton編程_和_delete UIButton編程_會做。但是,下次請在SO上發佈問題之前嘗試使用每種可能的資源。 –

回答

0

要做到這一點,你需要幾件事情:

  • IBOutletNSView自動在你的NSWindow。我打電話給我的mainView。 (注:我這樣做是與可可一臺Mac,因此NSWindow上,但我想這個過程會在iOS /可可觸摸非常相似)
  • 兩個圖像,一個按鈕和B按鈕中的一個,叫「A」和「B」。

如果A按鈕將被複制多次,我們希望,我們將需要一個按鈕類。 A按鈕類有一個初始化程序,它通過編程將它變成一個「圖像按鈕」,例如。一個按鈕,它的臉上有一個圖像而不是文本。此外,AButton類實現touchesBegan:,監聽按鈕點擊的功能。當點擊被執行時,按鈕調用該功能。然後該按鈕將其自身從任何視圖中移除。

class AButton: NSButton { 
    override init(frame frameRect: NSRect) { 
     super.init(frame: frameRect) 

     self.bezelStyle = .regularSquare 
     self.setButtonType(.momentaryPushIn) 
     self.isBordered = false 
     self.image = NSImage(named: "A") // puts image on the face of the button 
    } 

    override func touchesBegan(with event: NSEvent) { // "when button is clicked..." 
     self.removeFromSuperview() // remove from view 
    } 
} 

接下來,我們需要在單擊B按鈕時執行的功能。使用界面生成器(IB)將「圖像按鈕」拖到主窗口上。在工具欄中,選擇此按鈕的圖像爲「B」。然後,將IBAction從B按鈕拖到AppDelegate(或控制器文件/類,無論它是什麼)。該功能將運行創造了許多A按鈕的情況下,他們正確地定位一個循環,然後用addSubview()它們添加到NSView。只要其中一個人被按下,它就會從視圖中移除。

@IBOutlet weak var mainView: NSView! // outlet to NSView in main window 

@IBAction func bButtonPressed(_ sender: Any) { 
     for i in 0...3 { 
      let x = 50 + i*110 
      let y = 50 

      let theButton = AButton(frame: NSMakeRect(CGFloat(x), CGFloat(y), 100, 100)) 
      mainView.addSubview(theButton) // adds newly created AButton to the view 
     } 
} 
+0

但是,我怎樣才能連接IBAction,我將創建刪除A按鈕,當他們被點擊每個A按鈕? –

0

有很多方法..

的iOS

對於 「按鈕A」,我會更喜歡UICollectionViewCell。

優勢

  1. UICollectionView擁有的UIScrollView並自動動態地管理它的contentSize。
  2. UICollectionViewCell將被重用。所以內存問題和性能問題將不存在。方式