提问人:ebAtObjectiveC 提问时间:1/24/2018 更新时间:1/31/2018 访问量:213
在 Mac OS X 10.6.8 和 Xcode 3.2.6 下的 Objective-C 中单击按钮没有响应
No response by clicking a button in Objective-C under Mac OS X 10.6.8 and Xcode 3.2.6
问:
我的工作:我正在编写我的第一个 objective-c 软件,我开始编写代码。首先,它被认为是一个命令行工具,这也是我最初选择的项目类型。完成后,我添加了一个新的“应用程序 Xib”文件,名为“BedienOberflaeche.xib”并创建了一个 GUI。
我的问题:我试图通过单击新 GUI 中的按钮来获得响应,但我没有得到任何响应。
我的研究历史:严重的问题,例如创建按钮,将按钮与对象实例连接以及诸如“NSButton 没有响应”之类的问题。我还找不到答案。
与其他人的相关性:这个问题与所有这些人有关,他们正在创建他们的第一个 objective-c-application 并在其上添加一个 GUI。我认为,这是非常基本的。
我的工作平台:我正在 MacBook 10.6.8 上使用 Mac OS X 3.2.6 Snow Leopard 和 Xcode 2,1。我在 GUI 的 xib 文件中发现了以下内容:
Ed$ grep GuiPage FotobuchErsteller_0/BedienOberflaeche.xib
<int key="IBDocument.SystemTarget">1060</int>
<string key="IBDocument.SystemVersion">10K549</string>
<string key="IBDocument.InterfaceBuilderVersion">851</string>
<string key="IBDocument.AppKitVersion">1038.36</string>
<string key="IBDocument.HIToolboxVersion">461.00</string>
我已经尝试了以下方法:我的 GUI 包含一个名为“Selbsttest”的按钮。文件“BedienOberflaeche.xib”的图形表示包含一个条目,看起来像一个半透明的蓝色框,表示一个对象实例作为“GuiPage.m”的子类,位于连接类“GuiPage.m”(无间隙)之后,我在“Inspector”→“Gui Page Identity”(带间隙)→“Class Identity”→“Class = GuiPage”下配置了它。类“GuiPage.m”包含单击按钮后要执行的代码。该对象在方法“fuehreSelbsttestAus:”和条目“Push Button (Selbsttest)”之间有连接,该条目位于 Inspector → “Gui Page Connections” → “Recieved Actions”。fuehreSelbsttestAus:“ 是一个方法的名称,应该通过单击按钮来执行。除此之外,我没有对对象执行任何其他配置。
按钮本身显示“fuehreSelbsttestAus:”和“Inspector”下的对象“Gui Page”之间的连接,→“按钮连接”→“已发送的操作”。除了 Inspector 中的标题“Selbsttest”→“Button Attributes”→ “Title”之外,我没有在另一个按钮中对 Inspector 的“Button Effects”、“Button Size”、“Button bindings”和“Button Identity”部分进行任何进一步的配置。
方法“fuehreSelbsttestAus”可以在类“GuiPage.m”中找到:
#import "GuiPage.h"
@implementation GuiPage
//[...]
#pragma mark Methoden
-(IBAction)fuehreSelbsttestAus:(id)sender{
NSLog(@"Der Knopf zum ausfuehren des Selbsttests wurde gedrueckt.");
}
它应该重现简单的日志记录条目。我试图通过在界面构建器中启动“文件”→“模拟界面”来运行 GUI,这向我展示了 GUI 的模拟,但是,单击“Selbsttest”按钮后我看不到任何日志记录。
我检查了 .xib 文件中是否提到了“GuiPage”和“Selbsttest”按钮条目:
Edo$ grep GuiPage FotobuchErsteller_0/BedienOberflaeche.xib
<string key="NSClassName">GuiPage</string>
<string key="objectName">GuiPage</string>
<string key="className">GuiPage</string>
<string key="minorKey">GuiPage.h</string>
和
Edo$ grep Selbsttest FotobuchErsteller_0/BedienOberflaeche.xib
<string key="NSContents">Selbsttest</string>
<string key="label">fuehreSelbsttestAus:</string>
<string key="NS.key.0">fuehreSelbsttestAus:</string>
<string key="NS.key.0">fuehreSelbsttestAus:</string>
<string key="name">fuehreSelbsttestAus:</string>
那里提到了按钮和对象之间的连接。因此,我想知道,通过单击按钮,我可以做些什么来进一步执行方法“fuehreSelbsttestAus”中的书面代码。有人有想法吗?我真的很感激任何帮助。
答:
正如建议的那样,解决方案是创建一个 cocoa 应用程序并传输其中的所有源代码文件。显然,命令行应用程序类型不适合基于 GUI 的应用程序。
评论
NSApplication