0

我目前正在生成一系列按钮,效果很好。除此之外,每个按钮内部的触摸都会调用一个-(void)onTouch函数,在该函数中进行一些数学运算以确定一个动作。这一切都很好,除了我想存储按下按钮的历史记录。我尝试了许多不同的方法来创建NSMutableArray和存储按下按钮的值,但是因为我只能在-onTouch动作,每次按下按钮时,数组都会重置,因此它永远不会记住超过一个动作。如果我尝试在我的标头中声明数组并在外部合成它,我要么得到 nsmutable 数组不是编译时事物的错误,要么它不存储任何东西(日志输出为“(null)”。有人可以粘贴一些吗?关于如何声明一个可以在 uibutton 按下事件发生的地方存储和附加 uibutton 标签的数组的代码?如果不清楚,我将在今晚晚些时候发布代码。

干杯

4

2 回答 2

2

您不仅需要声明数组,还需要对其进行初始化。如果你不初始化,你不一定会收到警告,但你会得到很多 nil 数据。

您只想初始化一次数组(正如您所注意到的),所以这viewDidLoad是一个很好的地方。另一个好地方是在自定义访问器中......

- (NSMutableArray*)historyArray
{
    if (!_historyArray) {
       _historyArray = [[NSMutableArray alloc] init];
    }
    return _historyArray;
}

现在,当您第一次尝试时[self.historyArray addObject:sender],访问器会注意到没有 historyArray,创建一个并返回它。下一轮它不会被重新创建,因为它已经退出了。

于 2013-03-18T23:44:55.650 回答
1
@property(nonatomic,retain)NSMutableArray *tapCollection;

-(void)viewDidLoad{

   self.tapCollection = [[NSMutableArray alloc] init];
}

-(void)onTouch:(id)sender{

   UIButton *btnTapped = (UIButton *)sender;

   [self.tapCollection addObject:[NSNumber numberWithInt:btn.tag]];
}
于 2013-03-18T23:46:03.180 回答