按钮更改Array中的值的问题

时间:2011-10-09 11:58:21

标签: objective-c xcode

我想要它,所以我可以单击一个按钮,它会更改我的数组中的值(以及按钮的背景颜色),然后在标签中显示该值。 我不知道出了什么问题。我似乎无法从IBAction pushButtonOne访问我在viewDidLoad中设置的数组,因为当我点击它时它只是说“first 0”而不是“first 2”或“first 3”

如何制作它以便我不必在pushButtonOne部分声明数组?

在我的.h

#import <UIKit/UIKit.h>
@interface ArrayPracticeViewController : UIViewController {

IBOutlet UIButton *buttonOne;
IBOutlet UIButton *buttonTwo;
NSMutableArray *array;
IBOutlet UILabel *arrayOne;
IBOutlet UILabel *arrayTwo;
}
-(IBAction)pushButtonOne;
-(IBAction)pushButtonTwo;
@property(nonatomic, retain)NSMutableArray *array;
@end

在我的.m

#import "ArrayPracticeViewController.h"
@implementation ArrayPracticeViewController
@synthesize array;
-(void)viewDidLoad {    

NSMutableArray *array = [[NSMutableArray alloc] initWithObjects:[NSNumber numberWithInt:1],[NSNumber numberWithInt:2], nil];

arrayOne.text = [[NSString alloc] initWithFormat:@"first %d", [[array objectAtIndex:0] intValue]];
[super viewDidLoad];
}

-(IBAction)pushButtonOne{

if ([buttonOne.backgroundColor isEqual:[UIColor blackColor]]){
    buttonOne.backgroundColor = [UIColor whiteColor];
    [array replaceObjectAtIndex:0 withObject:[NSNumber numberWithInt:2]]; 
} else {
    buttonOne.backgroundColor = [UIColor blackColor];
    [array replaceObjectAtIndex:0 withObject:[NSNumber numberWithInt:3]]; 
}

arrayOne.text = [[NSString alloc] initWithFormat:@"first %d", [[array objectAtIndex:1] intValue]];

}

非常感谢任何帮助。这是一个更好的方式让我在一个数组中存储0和1,以便我可以通过单击按钮将其值从0切换为1或1到0?

2 个答案:

答案 0 :(得分:1)

您的数组索引似乎是错误的。

arrayOne.text = [[NSString alloc] initWithFormat:@"first %d", [[array objectAtIndex:1] intValue]];

获取[array objectAtIndex:1],但您将索引0中的预期值替换为:

[array replaceObjectAtIndex:0 withObject:...];

您应该使用:

arrayOne.text = [[NSString alloc] initWithFormat:@"first %d", [[array objectAtIndex:0] intValue]];

改为使用0索引。

答案 1 :(得分:0)

刚开始并确保您访问同一个数组,请更改viewDidLoad,如下所示,看看是否有修复

-(void)viewDidLoad {    

self.array = [[NSMutableArray alloc] initWithObjects:[NSNumber numberWithInt:1],[NSNumber  numberWithInt:2], nil];

arrayOne.text = [[NSString alloc] initWithFormat:@"first %d", [[array objectAtIndex:0] intValue]];
[super viewDidLoad];
}