我是Cocoa编程的新手,所以我仍然在努力掌握一些基本概念。
我想要做的(作为示例)是编写具有多个NSTextFields
的应用程序。但是,这些NSTextFields
需要才能链接到不同的类。此外,每个单独的类都需要能够相互获取和设置数据。
我试图添加方法来解决这个问题,但无济于事。假设这是文本框原始类中的一种方法,我想从另一个类中调用它。
-(void)settextfield:(NSString*)stringy;
{
[TextField setStringValue:stringy];
}
这是调用代码(我们从另一个类TestClass调用它)...
-(IBAction)test:sender;
{
[BundleBrowseTextBox settextfield: @"Testy"];
}
什么都没发生。可能有一些明显的方法可以做到这一点,但我无法通过谷歌搜索发现这一点。
答案 0 :(得分:1)
我的错误是我正在调用类方法而不是实例...您可以通过IBOutlets调用实例并在Interface Builder中正确定义这些插件。
答案 1 :(得分:0)
如果我正确地假设您正在尝试在BundleBrowseTextBox的实例中设置文本,则应该在实例名称上调用settextfield:消息,而不是在类名称上调用(如果BundleBrowseTextBox是实例 - 而不是类 - 为了清楚起见,你应该真的避免使用大写的实例名称。即:
-(IBAction)test:(id)sender;
{
// Assuming bbtBox is defined as an instance of BundleBrowseTextBox
[bbtBox settextfield: @"Testy"];
}
答案 2 :(得分:0)
您需要确保您使用的指针不是零。
关于objC的一个奇怪/方便的事情是你可以将消息传递给nil并且它不会崩溃。
答案 3 :(得分:0)
我相信您在原帖中忘记了参数类型 此...
-(IBAction)test:sender;
{
[BundleBrowseTextBox settextfield: @"Testy"];
}
应该是
-(IBAction)test:(id)sender;
{
[BundleBrowseTextBox settextfield: @"Testy"];
}
除此之外,如果你理解你所说的类和实例之间的区别。 如果您向我们展示其余的实现和界面,那将是很好的。 问题可能不在您向我们展示的代码段中。