gpt4 book ai didi

swift - 如何在 Xcode、Swift 中使用按钮创建相同的对象

转载 作者:行者123 更新时间:2023-11-30 12:54:43 25 4
gpt4 key购买 nike

假设我想创建一个按钮列表。我有一个按钮 B,当单击该按钮时,会以这种方式创建按钮 A 的列表。

然后,当单击每个按钮 A 时,它会自行删除。

我该怎么做?谢谢

最佳答案

为此,您需要一些东西:

  • 自动位于 NSWindow 中的 NSViewIBOutlet。我调用了我的 mainView。 (注意:我在 Mac 上使用 Cocoa 执行此操作,因此使用了 NSWindow,尽管我认为此过程在 iOS/Cocoa Touch 上非常相似)
  • 两张图像,一张是 A 按钮,一张是 B 按钮,分别称为“A”和“B”。

如果 A 按钮要按照我们希望的那样多次复制,我们将需要一个 A 按钮类。 A 按钮类有一个初始化程序,可以通过编程将其转换为“图像按钮”,例如。表面有图像而不是文本的按钮。此外,AButton 类还实现 touchesBegan:,这是一个监听按钮点击的函数。当执行单击时,按钮会调用该函数。然后该按钮将从其所在的任何 View 中删除自身。

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 按钮时执行的函数。使用 Interface Builder (IB) 将“图像按钮”拖到主窗口上。在工具栏中,选择该按钮的图像为“B”。然后,将 IBAction 从 B 按钮拖到您的 AppDelegate(或 Controller 文件/类,无论它是什么)。该函数运行一个循环,创建许多 AButton 实例,正确定位它们,然后使用 addSubview() 将它们添加到 NSView 中。每当按下其中一个按钮时,它就会从 View 中移除。

@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
}
}

关于swift - 如何在 Xcode、Swift 中使用按钮创建相同的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40563189/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com