Xcode如何在函数中使用时使用IBOutlet进行标记

Axu*_*aja 4 c++ macos cocoa function objective-c

我与我的标签有关:

@property (weak) IBOutlet NSTextField *scoreBox;
Run Code Online (Sandbox Code Playgroud)

正确的,我正试图像这样访问它:

void namedfunction(button) {

    if (button == button) {
        score = score + 100;
        [scoreBox setIntValue:score];
      // ^ error
    }
}
Run Code Online (Sandbox Code Playgroud)

我收到这个错误:

AppDelegate.m:52:10:使用未声明的标识符'scoreBox'

我究竟做错了什么?

Ano*_*dya 5

使用

[_scoreBox setIntValue:score];
Run Code Online (Sandbox Code Playgroud)

要么

[self.scoreBox setIntValue:score];
Run Code Online (Sandbox Code Playgroud)

*同时检查您是否最终比较相同的按钮,如:button==button.

编辑2:

因为你的代码是:

int perus(int nappi){

}
Run Code Online (Sandbox Code Playgroud)

将其更改为:

- (NSInteger *)perus:(NSInteger *)nappi{
    //all should do inside, rest are OK.
}
Run Code Online (Sandbox Code Playgroud)

编辑:

我不确定这里发现的以下内容

*我建议你切换到obj-c方法,而不是使用C函数来做这种事情.

AC函数只是一个代码块没有附加到其他任何东西.您的实例变量附加到每个Controller对象.因此,当您调用printChatter()时,无法知道要使用哪个Controller实例.您可以在函数中添加一个对象变量:

void namedfunction(const void *button, const void *appDele){
    NSTextField *myButton=[appDele scoreBox];
    ....
}
Run Code Online (Sandbox Code Playgroud)