1

我正在努力寻找一种在 iPhone 应用程序上工作的方法,其他方法工作正常,但这个起作用了。

我想将两个变量传递给一个更新按钮标题的方法。一个 INT 用于指定按钮,一个 INT 用于引用 NSMutablearray 中的文本。这是方法:

void buttonLabelChange(int buttonNumber, int nameNumber){
    if (buttonNumber == 1) {
        [button1Outlet setTitle:[objectArray objectAtIndex:nameNumber] forState:UIControlStateNormal];
    } else {
        [button2Outlet setTitle:[objectArray objectAtIndex:nameNumber] forState:UIControlStateNormal];
    }
}

我得到的错误是:“使用未声明的标识符'button1Outlet'”。这个确切的代码([button1Outlet setTitle......)在“viewDidLoad”部分就像一个魅力......

我的 .h 文件包含:

void buttonLabelChange();

在一天的大部分时间里,我一直在用头撞墙,在谷歌上也找不到任何有用的东西(我理解..)。建议?


谢谢您的帮助!


这是我的新工作代码:

.m

- (void)buttonLabelChange:(int)buttonNumber name:(int)nameNumber{
    if (buttonNumber == 1) {
        [button1Outlet setTitle:[objectArray objectAtIndex:nameNumber] forState:UIControlStateNormal];
    } else {
        [button2Outlet setTitle:[objectArray objectAtIndex:nameNumber] forState:UIControlStateNormal];
    }
}

。H

void buttonLabelChange();

并称之为:

[self buttonLabelChange:1 name:randomP1];
4

2 回答 2

3

您的代码是 ac 函数,而不是 Objective-c 方法。尝试更换

void buttonLabelChange(int buttonNumber, int nameNumber)

- (void)buttonLabelChange:(int)buttonNumber name:(int)nameNumber

在 .h 和 .m 文件中。

于 2013-09-05T16:28:29.607 回答
1

这是因为您已将代码放在一个函数中,该函数不是您的视图对象的一部分。仅仅因为该函数与视图代码在同一个实现文件中,并不赋予它对视图对象的任何特殊访问权限。

改用视图方法,或将视图实例传递给函数(可怕,因为它需要暴露出口以及objectArray):

void buttonLabelChange(UIView *view, int buttonNumber, int nameNumber){
    if (buttonNumber == 1) {
        [view.button1Outlet setTitle:[view.objectArray objectAtIndex:nameNumber] forState:UIControlStateNormal];
    } else {
        [view.button2Outlet setTitle:[view.objectArray objectAtIndex:nameNumber] forState:UIControlStateNormal];
    }
}
于 2013-09-05T16:26:09.923 回答