我想要它,所以我可以单击一个按钮,它会更改我的数组中的值(以及按钮的背景颜色),然后在标签中显示该值。 我不知道出了什么问题。我似乎无法从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?
答案 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];
}