gpt4 book ai didi

objective-c - 在 cocoa 中以编程方式更改按钮的背景图像

转载 作者:行者123 更新时间:2023-12-03 17:31:22 24 4
gpt4 key购买 nike

我搜索过的所有主题在 Obj-c 中都已过时或不完整。

当 InterfaceBuilder 中有实际按钮时,我需要学习如何以编程方式更改按钮的背景图像。 (这听起来很奇怪,但我需要它用于 NSCollectionView 因为我有许多具有不同背景图像的类似按钮)。

在界面生成器中,我将一个按钮拖到 View 窗口上,之后我应该做什么?

我的理解是:

  • 我需要创建一个 NSButton 类
  • 将按钮从界面生成器连接到代码
  • 设置图像

我一直在努力解决这个问题。

最佳答案

那么您是否将按钮连接到 IBOutlet 属性?如果是这样,那么您需要做的就是使用 [button setImage:]

如果您还没有这样做,请确保您想要更改图像的对象实例位于界面生成器中,即已作为那些蓝色框之一放入。然后,如果您设置对象的类并在头文件中具有 IBOutlet 属性,您只需将导出选项卡中的按钮导出(看起来像箭头)拖动到实际按钮本身即可链接两者

编辑:看来您在按钮的实际连接部分遇到了问题?您的 IB 文件可能看起来有点像这样:

enter image description here

在左侧列表中查找对象部分。这些是代码中可以将按钮连接到的实际对象。您可能会在那里看到一个应用程序委托(delegate)对象,该对象包含在您首次创建项目时生成的默认 IB 文件中。如果您想处理应用程序委托(delegate)中的图像更改,只需将此属性添加到您的 AppDelegate.h 文件中即可创建一个 socket :

@property IBOutlet NSButton *button;

如果您返回界面构建器并选择应用程序委托(delegate)对象,您可以在 socket 选项卡下看到刚刚创建的 socket :

enter image description here

将小圆圈拖到按钮上进行连接,这应该是最简单的一点。

但我假设您想从应用程序委托(delegate)之外的其他地方调用它,为此我们需要做更多解释。如果您想要调用它的类是 NSView 的子类,并且已经在您的界面构建器中,您只需将该行添加到 View 的头文件中,它将出现在 View 的导出选项卡下。

如果您想从另一个不是 View 等的对象调用此方法,则需要执行以下两个选项:

  1. 在界面构建器中创建对象实例。这意味着您必须将对象实际拖入界面生成器中,而不是通常使用 alloc] init]; 等创建。这可能会极大地改变对象的结构,因为您将不再能够随意创建它,因为每当您加载 .nib 文件时它都会自动实例化。另外需要注意的是,您的 init 函数将不再被调用,您需要使用 awakeFromNib 来代替。如果您确实选择沿着这条路线走,只需拖动一个对象即可:

enter image description here

将您的 socket 属性添加到头文件中:

enter image description here

设置对象的类:

enter image description here

并连接 socket :

enter image description here

  • 如果您不喜欢加载 XIB 对象,那么您始终可以将属性导出连接到您的应用程序委托(delegate)/ View Controller 并从中访问它。如果这就是您遇到的问题,希望这可以解决问题。
  • 关于objective-c - 在 cocoa 中以编程方式更改按钮的背景图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30351230/

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