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

标签 swift xcode class button

假设我想创建一个按钮列表。我有一个按钮 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/

相关文章:

swift - 在应用程序启动时从 Core Data 获取数据

c++ - 在 C++ 中继承结构的最有效方法?

c# - C# 中的类设计 - DAL

iphone - 如何在 xcode 中重新启用 CoreLocation 提示?

python - 在python中从类vs对象调用函数

ios - adjustsFontForContentSizeCategory iOS 的替代方案是什么?

ios - 从 Swift 函数中的异步调用返回数据

json - 如何使用 Swift Decodable 协议(protocol)解码嵌套的 JSON 结构?

ios - 是否可以更改已编译的 iOS 应用程序的图标?

ios - Xcode构建错误-CodeSign